RoboidControl-python/test/SwingTwist_test.py
2025-03-31 12:20:52 +02:00

96 lines
3.5 KiB
Python

import unittest
from LinearAlgebra.SwingTwist import *
class SwingTwistTest(unittest.TestCase):
def test_Constructor(self):
s = SwingTwist.Degrees(0, 0, 0)
assert(s == SwingTwist.Degrees(0, 0, 0))
s = SwingTwist.Degrees(0, 180, 0)
assert(s == SwingTwist.Degrees(180, 0, 180))
s = SwingTwist.Degrees(0, 180, 180)
assert(s == SwingTwist.Degrees(180, 0, 0))
s = SwingTwist.Degrees(270, 90, 0)
assert(s == SwingTwist.Degrees(-90, 90, 0))
s = SwingTwist.Degrees(270, 270, 0)
assert(s == SwingTwist.Degrees(-90, -90, 0))
s = SwingTwist.Degrees(270, 225, 0)
assert(s == SwingTwist.Degrees(90, -45, -180))
s = SwingTwist.Degrees(270, 0, 225)
assert(s == SwingTwist.Degrees(-90, 0, -135))
def test_FromQuaternion(self):
q = Quaternion.identity
r = SwingTwist.FromQuaternion(q)
assert(r == SwingTwist.Degrees(0, 0, 0))
q = Quaternion.Degrees(90, 0, 0)
r = SwingTwist.FromQuaternion(q)
assert(SwingTwist.isclose(r, SwingTwist.Degrees(90, 0, 0)))
q = Quaternion.Degrees(0, 90, 0)
r = SwingTwist.FromQuaternion(q)
assert(r == SwingTwist.Degrees(0, 90, 0))
q = Quaternion.Degrees(0, 0, 90)
r = SwingTwist.FromQuaternion(q)
assert(r == SwingTwist.Degrees(0, 0, 90))
q = Quaternion.Degrees(0, 180, 0)
r = SwingTwist.FromQuaternion(q)
assert(r == SwingTwist.Degrees(0, 180, 0))
q = Quaternion.Degrees(0, 135, 0)
r = SwingTwist.FromQuaternion(q)
assert(r == SwingTwist.Degrees(0, 135, 0))
def test_FromAngleAxis(self):
r = SwingTwist.FromAngleAxis(Angle.zero, Direction.up)
assert(r == SwingTwist.Degrees(0, 0, 0))
r = SwingTwist.FromAngleAxis(Angle.Degrees(90), Direction.up)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(90, 0, 0))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(180), Direction.up)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(180, 0, 0))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(270), Direction.up);
angle = SwingTwist.Angle(r, SwingTwist.Degrees(-90, 0, 0))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(90), Direction.right)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(0, 90, 0))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(180), Direction.right)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(0, 180, 0))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(270), Direction.right)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(0, -90, 0))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(90), Direction.forward)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(0, 0, 90))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(180), Direction.forward)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(0, 0, 180))
assert(angle.InDegrees() == 0)
r = SwingTwist.FromAngleAxis(Angle.Degrees(270), Direction.forward)
angle = SwingTwist.Angle(r, SwingTwist.Degrees(0, 0, -90))
assert(angle.InDegrees() == 0)
# auto r16 = SwingTwist16::AngleAxis(13, Direction16::down);
# auto s16 = SwingTwist16::Degrees(-13, 0, 0);
# assert(SwingTwist16::Angle(r16, s16), Angle16::Degrees(0))