Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3. using NUnit.Framework;
  4.  
  5. namespace Manipulation
  6. {
  7. public static class AnglesToCoordinatesTask
  8. {
  9. public static PointF[] GetJointPositions(double shoulder, double elbow, double wrist)
  10. {
  11. var result = new PointF[3];
  12. float elbowX = Manipulator.UpperArm * (float)Math.Cos(shoulder);
  13. float elbowY = (float)Manipulator.UpperArm * (float)Math.Sin(shoulder);
  14. result[0] = new PointF(elbowX, elbowY);
  15. var elbowAlpha = elbow - Math.PI / 2 - Math.PI / 2 + shoulder;
  16. var wristX = elbowX + Manipulator.Forearm * (float)Math.Cos(elbowAlpha);
  17. var wristY=elbowY+ Manipulator.Forearm * (float)Math.Sin(elbowAlpha);
  18. result[1] = new PointF(wristX, wristY);
  19. var wristAlpha = wrist - Math.PI / 2 + elbowAlpha;
  20. var palmX = wristX + Manipulator.Palm * (float)Math.Sin(wristAlpha);
  21. var palmY = wristY - Manipulator.Palm * (float)Math.Cos(wristAlpha);
  22. result[2] = new PointF(palmX, palmY);
  23. return result;
  24. }
  25. }
  26. [TestFixture]
  27. public class AnglesToCoordinatesTask_Tests
  28. {
  29. [TestCase(Math.PI / 2, Math.PI / 2, Math.PI, Manipulator.Forearm + Manipulator.Palm, Manipulator.UpperArm, Manipulator.Forearm, Manipulator.UpperArm, 0, Manipulator.UpperArm)]
  30. [TestCase(0, Math.PI, Math.PI, Manipulator.UpperArm + Manipulator.Forearm + Manipulator.Palm, 0, Manipulator.UpperArm + Manipulator.Forearm, 0, Manipulator.UpperArm, 0)]
  31. [TestCase(Math.PI / 2, Math.PI, Math.PI, 0, Manipulator.UpperArm + Manipulator.Forearm + Manipulator.Palm, 0, Manipulator.UpperArm + Manipulator.Forearm, 0, Manipulator.UpperArm)]
  32. public void TestGetJointPositions(double shoulder, double elbow, double wrist, double palmEndX, double palmEndY, double wristX, double wristY, double elbowX, double elbowY )
  33. {
  34. var joints = AnglesToCoordinatesTask.GetJointPositions(shoulder, elbow, wrist);
  35. Assert.AreEqual(palmEndX, joints[2].X, 1e-5, "palm endX");
  36. Assert.AreEqual(palmEndY, joints[2].Y, 1e-5, "palm endY");
  37. Assert.AreEqual(wristX, joints[1].X, 1e-5, "wrist X");
  38. Assert.AreEqual(wristY, joints[1].Y, 1e-5, "wrist Y");
  39. Assert.AreEqual(elbowX, joints[0].X, 1e-5, "elbow X");
  40. Assert.AreEqual(elbowY, joints[0].Y, 1e-5, "elbow Y");
  41. Assert.AreEqual(Math.Sqrt(Math.Pow((palmEndX - wristX),2)+Math.Pow((palmEndY - wristY),2)), Manipulator.Palm);
  42. Assert.AreEqual(Math.Sqrt(Math.Pow((elbowX - wristX), 2) + Math.Pow((elbowY - wristY), 2)), Manipulator.Forearm);
  43. Assert.AreEqual(Math.Sqrt(Math.Pow((elbowX), 2) + Math.Pow((elbowY), 2)), Manipulator.UpperArm);
  44. }
  45. }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement