public static TwistSwingConstraint MakeFromRadians(CartesianAxis twistAxis, Vector3 min, Vector3 max)
    {
        var twistConstraint = TwistConstraint.MakeFromRadians(twistAxis, min, max);
        var swingConstraint = SwingConstraint.MakeFromRadians(twistAxis, min, max);

        return(new TwistSwingConstraint(twistConstraint, swingConstraint));
    }
    public void TestTest()
    {
        var constraint = new TwistConstraint(-0.1f, +0.2f);

        Assert.IsTrue(constraint.Test(new Twist(-0.09f)));
        Assert.IsFalse(constraint.Test(new Twist(-0.11f)));

        Assert.IsTrue(constraint.Test(new Twist(+0.19f)));
        Assert.IsFalse(constraint.Test(new Twist(+0.21f)));
    }
    public void TestClamp()
    {
        var constraint = new TwistConstraint(-0.1f, +0.2f);

        MathAssert.AreEqual(new Twist(-0.09f), constraint.Clamp(new Twist(-0.09f)), Acc);
        MathAssert.AreEqual(new Twist(-0.10f), constraint.Clamp(new Twist(-0.11f)), Acc);

        MathAssert.AreEqual(new Twist(+0.19f), constraint.Clamp(new Twist(+0.19f)), Acc);
        MathAssert.AreEqual(new Twist(+0.20f), constraint.Clamp(new Twist(+0.20f)), Acc);
    }
 public TwistSwingConstraint(TwistConstraint twistConstraint, SwingConstraint swingConstraint)
 {
     this.twistConstraint = twistConstraint;
     this.swingConstraint = swingConstraint;
 }