def test_distal_node_is_rotated_by_90deg_about_correct_axis(self): h = Hinge('hinge', [0, 0, 1]) h.rp = array([3.5, 9.21, 8.6]) h.Rp = eye(3) # Test distal transform h.calc_distal_pos() assert_array_equal(h.rd, h.rp) assert_array_equal(h.Rd, h.Rp) h.xstrain[0] = pi / 2 h.calc_distal_pos() assert_array_equal(h.rd, h.rp) # always coincident # New unit vectors X -> y, Y -> -x, Z -> z assert_array_almost_equal(h.Rd, c_[[0, 1, 0], [-1, 0, 0], [0, 0, 1]])
def test_additional_post_transform_of_90deg_is_applied(self): h = Hinge('hinge', [0, 0, 1], post_transform=rotmat_x(pi / 2)) h.rp = array([3.5, 9.21, 8.6]) h.Rp = eye(3) # Test distal transform with post transform h.calc_distal_pos() assert_array_equal(h.rd, h.rp) # just post transform assert_array_almost_equal(h.Rd, c_[[1, 0, 0], [0, 0, 1], [0, -1, 0]]) h.xstrain[0] = pi / 2 h.calc_distal_pos() assert_array_equal(h.rd, h.rp) # always coincident # rotate about z then x assert_array_almost_equal(h.Rd, c_[[0, 1, 0], [0, 0, 1], [1, 0, 0]])