def test_pose_computation(): g = inertia.graph.Node() g['x'].pose = inertia.translate(offset=[10, 10]) g['x.z'].pose = inertia.translate(offset=[10, 10]) @ inertia.rotate( angle=np.pi / 2) g['y'].pose = inertia.translate(offset=[-10, -10]) aae(g.pose_in_world, inertia.identity(dims=2)) aae(g['x'].pose_in_world, inertia.translate(offset=[10, 10])) aae( g['x.z'].pose_in_world, inertia.translate(offset=[10, 10]) @ inertia.translate(offset=[10, 10]) @ inertia.rotate(angle=np.pi / 2)) aae( g['x.z'].pose_in(g['y']), inertia.inv(g['y'].pose_in_world) @ inertia.translate(offset=[10, 10]) @ inertia.translate(offset=[10, 10]) @ inertia.rotate(angle=np.pi / 2)) aae(g.pose_in(g['x.z']), inertia.inv(g['x.z'].pose_in_world))
def test_transform_vectors(): m = inertia.translate(offset=[-10, -10]) @ inertia.rotate(angle=np.pi / 2) aae(inertia.tv(m, [1, 1]), [-1, 1]) aae(inertia.tv(m, [[1, 2], [1, 2]]), [[-1, -2], [1, 2]])
def test_transform_points(): m = inertia.translate(offset=[-10, -10]) @ inertia.rotate(angle=np.pi / 2) aae(inertia.tp(m, [1, 1]), [-11, -9]) aae(inertia.tp(m, [[1, 2], [1, 2]]), [[-11, -12], [-9, -8]])
def test_inverse(): m = inertia.translate(offset=[1, 1]) @ inertia.rotate(angle=np.pi / 2) aae(inertia.inv(m), lin.inv(m)) aae(inertia.inv(m, hint='isometry'), lin.inv(m))
def test_rotate_cw(): m = inertia.rotate(angle=-np.pi / 2) aae(m, [[0, 1, 0], [-1, 0, 0], [0, 0, 1]])