Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 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 elbowPos = new PointF(0, (float) Manipulator.UpperArm);
  12. var wristPos = new PointF((float) Manipulator.Forearm, (float) Manipulator.UpperArm);
  13. var palmEndPos = new PointF((float) (Manipulator.Forearm + Manipulator.Palm), (float) Manipulator.UpperArm);
  14. elbowPos.X = (float)(Math.Cos(shoulder)*Manipulator.UpperArm);
  15. elbowPos.Y = (float)(Math.Sin(shoulder) * Manipulator.UpperArm);
  16. wristPos.X = (float)(elbowPos.X+ Math.Cos(elbow-shoulder)*Manipulator.Forearm);
  17. wristPos.Y = (float)(elbowPos.Y + Math.Sin(elbow - shoulder) * Manipulator.Forearm);
  18. palmEndPos.X = (float)(wristPos.X + Math.Cos(180 - wrist - elbow + shoulder) * Manipulator.Palm);
  19. palmEndPos.Y = (float)(wristPos.Y + Math.Sin(180 - wrist - elbow + shoulder) * Manipulator.Palm);
  20. return new PointF[]
  21. {
  22. elbowPos,
  23. wristPos,
  24. palmEndPos
  25. };
  26. }
  27. }
  28. [TestFixture]
  29. public class AnglesToCoordinatesTask_Tests
  30. {
  31. // Доработайте эти тесты!
  32. // С помощью строчки TestCase можно добавлять новые тестовые данные.
  33. // Аргументы TestCase превратятся в аргументы метода.
  34. [TestCase(Math.PI / 2, Math.PI / 2, Math.PI, Manipulator.Forearm + Manipulator.Palm, Manipulator.UpperArm)]
  35. public void TestGetJointPositions(double shoulder, double elbow, double wrist, double palmEndX, double palmEndY)
  36. {
  37. var joints = AnglesToCoordinatesTask.GetJointPositions(shoulder, elbow, wrist);
  38. Assert.AreEqual(palmEndX, joints[2].X, 1e-5, "palm endX");
  39. Assert.AreEqual(palmEndY, joints[2].Y, 1e-5, "palm endY");
  40. Assert.Fail("TODO: проверить, что расстояния между суставами равны длинам сегментов манипулятора!");
  41. }
  42.  
  43. }
  44.  
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement