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" ); }
//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; //} }
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); } }