public void ShouldInterpolateByAngle(
            float startValue, float endValue, float interpolateValue, int expectedSteps
            )
        {
            var lerp = new LerpAngle(startValue);

            lerp.SetEndValue(endValue);

            Assert.That(
                lerp.EvalAngle(0f), Is.EqualTo(lerp.StartValue).Within(1f),
                "Fail to validate start value"
                );

            for (int i = 0; i < expectedSteps - 1; i++)
            {
                var value = lerp.EvalAngle(interpolateValue);

                Assert.That(
                    value,
                    Is.Not.EqualTo(lerp.EndValue).Within(.1f),
                    $"Was equal on {i} interaction"
                    );
            }

            Assert.That(
                lerp.EvalAngle(interpolateValue), Is.EqualTo(lerp.EndValue).Within(1f),
                "Fail to validate end value"
                );
        }
        public void ShouldInterpolateOriginalAngleWhenCheckMinPathIsDisabled()
        {
            var startValue        = -135f;
            var endValue          = 135f;
            var interpolateAmount = 1f;
            var expectedSteps     = 270;

            var lerp = new LerpAngle(startValue)
            {
                CheckMinPath = false
            };

            lerp.SetEndValue(135f);

            Assert.That(
                lerp.EvalAngle(0f), Is.EqualTo(startValue).Within(1f),
                "Fail to validate start value"
                );

            for (int i = 0; i < expectedSteps - 1; i++)
            {
                var value = lerp.EvalAngle(interpolateAmount);

                Assert.That(
                    value,
                    Is.Not.EqualTo(endValue).Within(.1f),
                    $"Was equal on {i} interaction"
                    );
            }

            Assert.That(
                lerp.EvalAngle(interpolateAmount), Is.EqualTo(endValue).Within(1f),
                "Fail to validate end value"
                );
        }
        public void ShouldRetainStateOfInterpolationWhenChangeEndValue()
        {
            var startValue        = 0f;
            var middleValue       = 10f;
            var endValue          = 20f;
            var interpolateAmount = 1f;

            var lerp = new LerpAngle(startValue)
            {
                RetainState = true
            };

            lerp.SetEndValue(middleValue);

            Assert.That(
                lerp.EvalAngle(0f), Is.EqualTo(startValue).Within(1f),
                "Fail to validate start value"
                );

            for (int i = 0; i < 5 - 1; i++)
            {
                var value = lerp.EvalAngle(interpolateAmount);

                Assert.That(
                    value,
                    Is.Not.EqualTo(5f).Within(.1f),
                    $"Was equal on {i} interaction"
                    );
            }

            lerp.SetEndValue(20f);

            Assert.That(
                lerp.EvalAngle(interpolateAmount), Is.EqualTo(5f).Within(.1f),
                "Fail to validate middle pathway value"
                );

            for (int i = 0; i < 15 - 1; i++)
            {
                var value = lerp.EvalAngle(interpolateAmount);

                Assert.That(
                    value,
                    Is.Not.EqualTo(endValue).Within(.1f),
                    $"Was equal on {i} interaction"
                    );
            }

            Assert.That(
                lerp.EvalAngle(interpolateAmount), Is.EqualTo(endValue).Within(1f),
                "Fail to validate end value"
                );
        }
Esempio n. 4
0
    //IEnumerator MotionCheck(PivotController Base, PivotController Shoulder, PivotController Elbow, PivotController Wrist, PivotController Gripper, PivotController Pincer1, PivotController Pincer2)
    IEnumerator MotionCheck(LerpAngle Base, LerpAngle Shoulder, LerpAngle Elbow, LerpAngle Wrist, LerpAngle Gripper, LerpAngle Pincer1, LerpAngle Pincer2)
    {
        //while (true)
        //{
        Shoulder.active = true;
        yield return(new WaitForSeconds(4f));

        Base.active = true;
        yield return(new WaitForSeconds(11f));

        Shoulder.active = false;
        Base.active     = false;
        yield return(new WaitForSeconds(0.5f));

        Elbow.active = true;
        yield return(new WaitForSeconds(4.5f));

        Gripper.active = true;
        yield return(new WaitForSeconds(5.5f));

        Elbow.active   = false;
        Gripper.active = false;
        yield return(new WaitForSeconds(0.5f));

        Wrist.active = true;
        yield return(new WaitForSeconds(3.5f));

        Wrist.active = false;
        yield return(new WaitForSeconds(0.5f));

        Pincer1.active = true;
        Pincer2.active = true;
        yield return(new WaitForSeconds(4.5f));

        Pincer1.active = false;
        Pincer2.active = false;

        //yield return 0;
        //}
    }
Esempio n. 5
0
        public Node <INode> GetNode(string nodeName)
        {
            switch (nodeName)
            {
            case Absolute.NAME:
                INode nodeAbsolute = new Absolute() as INode;
                return(new Node <INode>(nodeAbsolute));

            case Approx.NAME:
                INode nodeAprox = new Approx() as INode;
                return(new Node <INode>(nodeAprox));

            case ArcCos.NAME:
                INode nodeArcCos = new ArcCos() as INode;
                return(new Node <INode>(nodeArcCos));

            case ArcSin.NAME:
                INode nodeArcSin = new ArcSin() as INode;
                return(new Node <INode>(nodeArcSin));

            case ArcTan2.NAME:
                INode nodeArcTan2 = new ArcTan2() as INode;
                return(new Node <INode>(nodeArcTan2));

            case Ceil.NAME:
                INode nodeCeil = new Ceil() as INode;
                return(new Node <INode>(nodeCeil));

            case CeilToInt.NAME:
                INode nodeCeilToInt = new CeilToInt() as INode;
                return(new Node <INode>(nodeCeilToInt));

            case Clamp.NAME:
                INode nodeClamp = new Clamp() as INode;
                return(new Node <INode>(nodeClamp));

            case Clamp01.NAME:
                INode nodeClamp01 = new Clamp01() as INode;
                return(new Node <INode>(nodeClamp01));

            case ClosestPowerOf2.NAME:
                INode nodeClosestPowerOf2 = new ClosestPowerOf2() as INode;
                return(new Node <INode>(nodeClosestPowerOf2));

            case Cosinus.NAME:
                INode nodeCosinus = new Cosinus() as INode;
                return(new Node <INode>(nodeCosinus));

            case DeltaAngle.NAME:
                INode nodeDeltaAngle = new DeltaAngle() as INode;
                return(new Node <INode>(nodeDeltaAngle));

            case Exp.NAME:
                INode nodeExp = new Exp() as INode;
                return(new Node <INode>(nodeExp));

            case Floor.NAME:
                INode nodeFloor = new Floor() as INode;
                return(new Node <INode>(nodeFloor));

            case FloorToInt.NAME:
                INode nodeFloorToInt = new FloorToInt() as INode;
                return(new Node <INode>(nodeFloorToInt));

            case Lerp.NAME:
                INode nodeLerp = new Lerp() as INode;
                return(new Node <INode>(nodeLerp));

            case LerpAngle.NAME:
                INode nodeLerpAngle = new LerpAngle() as INode;
                return(new Node <INode>(nodeLerpAngle));

            case Log10.NAME:
                INode nodeLog10 = new Log10() as INode;
                return(new Node <INode>(nodeLog10));

            case Logarithm.NAME:
                INode nodeLogarithm = new Logarithm() as INode;
                return(new Node <INode>(nodeLogarithm));

            case Sinus.NAME:
                INode nodeSinus_ = new Sinus() as INode;
                return(new Node <INode>(nodeSinus_));

            case Max.NAME:
                INode nodeMax = new Max() as INode;
                return(new Node <INode>(nodeMax));

            case Min.NAME:
                INode nodeMin = new Min() as INode;
                return(new Node <INode>(nodeMin));

            case MoveTowards.NAME:
                INode nodeMoveTowards = new MoveTowards() as INode;
                return(new Node <INode>(nodeMoveTowards));

            case MoveTowardsAngle.NAME:
                INode nodeMoveTowardsAngle = new MoveTowardsAngle() as INode;
                return(new Node <INode>(nodeMoveTowardsAngle));

            case NextPowerOfTwo.NAME:
                INode nodeNextPowerOfTwo = new NextPowerOfTwo() as INode;
                return(new Node <INode>(nodeNextPowerOfTwo));

            case PerlinNoise.NAME:
                INode nodePerlinNoise = new PerlinNoise() as INode;
                return(new Node <INode>(nodePerlinNoise));

            case PingPong.NAME:
                INode nodePingPong = new PingPong() as INode;
                return(new Node <INode> (nodePingPong));

            case Pow.NAME:
                INode nodePow = new Pow() as INode;
                return(new Node <INode>(nodePow));

            case SquareRoot.NAME:
                INode nodeSqrt = new SquareRoot() as INode;
                return(new Node <INode>(nodeSqrt));

            case Tan.NAME:
                INode nodeTan = new Tan() as INode;
                return(new Node <INode>(nodeTan));

            case Random.NAME:
                INode nodeRandom = new Random() as INode;
                return(new Node <INode>(nodeRandom));

            default:
                return(null);
            }
        }