def test_HomTra_is_close_to(): t = rs.HomTra() assert t.is_close_to(t) u = rs.HomTra() assert t.is_close_to(u) u.set_translation([1.0, 2.0, 3.0]) assert not t.is_close_to(u)
def test_HomTra_inverse_translation_x(): t = rs.HomTra() t.set_translation([3, 0, 0]) assert t.T[0,3] == 3.0 assert t.T[1,3] == 0.0 assert t.T[2,3] == 0.0 t_inv = t.inverse() assert t_inv.T[0,3] == -3.0 assert t_inv.T[1,3] == 0.0 assert t_inv.T[2,3] == 0.0 assert t.is_close_to(t_inv.inverse())
def test_tait_bryan_eye(): Rx = 0.0 Ry = 0.0 Rz = 0.0 t = rs.HomTra() t.set_rotation_tait_bryan_angles(Rx, Ry, Rz) # rotation shall be eye3 assert t.T[0,0] == 1.0 assert t.T[0,1] == 0.0 assert t.T[0,2] == 0.0 assert t.T[1,0] == 0.0 assert t.T[1,1] == 1.0 assert t.T[1,2] == 0.0 assert t.T[2,0] == 0.0 assert t.T[2,1] == 0.0 assert t.T[2,2] == 1.0
def test_HomTra_init(): t = rs.HomTra() # translation shall be zero assert t.T[0,3] == 0.0 assert t.T[1,3] == 0.0 assert t.T[2,3] == 0.0 # rotation shall be eye3 assert t.T[0,0] == 1.0 assert t.T[0,1] == 0.0 assert t.T[0,2] == 0.0 assert t.T[1,0] == 0.0 assert t.T[1,1] == 1.0 assert t.T[1,2] == 0.0 assert t.T[2,0] == 0.0 assert t.T[2,1] == 0.0 assert t.T[2,2] == 1.0
def test_HomTra_all(): t = rs.HomTra() t.set_rotation_axis_and_angle([0.0,0.0,1.0], np.rad2deg(90.0)) t.set_translation([0.0, 1.0, 0.0]) A = np.array([1.0, 0.0, 0.0]) B = np.array([0.0, 1.0, 0.0]) C = np.array([0.0, 0.0, 1.0]) A_t = t.transformed_position(A) B_t = t.transformed_position(B) C_t = t.transformed_position(C) t_inv = t.inverse() assert np.isclose(t_inv.transformed_position(A_t), A, 1e-9).all() assert np.isclose(t_inv.transformed_position(B_t), B, 1e-9).all() assert np.isclose(t_inv.transformed_position(C_t), C, 1e-9).all() assert np.isclose(t.transformed_position_inverse(A), t.inverse().transformed_position(A), 1e-9).all() assert np.isclose(t.transformed_position_inverse(B), t.inverse().transformed_position(B), 1e-9).all() assert np.isclose(t.transformed_position_inverse(C), t.inverse().transformed_position(C), 1e-9).all()
""" geometry = rs.Geometry(rs.config.example) total_geometry = rs.factory.generate_reflector_with_tension_ring_and_cables(geometry) nodes = total_geometry["nodes"] bars_reflector = total_geometry["bars_reflector"] bars_tension_ring = total_geometry["bars_tension_ring"] cables = total_geometry["cables"] elastic_supports = total_geometry["elastic_supports"] cable_supports = total_geometry["cable_supports"] mirror_tripods = total_geometry["mirror_tripods"] fixtures = total_geometry["elastic_supports"] """ dish rotation """ homogenous_transformation = rs.HomTra() homogenous_transformation.set_translation(geometry.translational_vector_xyz) homogenous_transformation.set_rotation_tait_bryan_angles(geometry.tait_bryan_angle_Rx, geometry.tait_bryan_angle_Ry, geometry.tait_bryan_angle_Rz) nodes_rotated = rs.SAP2000_bridge.HomTra_bridge_tools.get_nodes_moved_position(nodes, cable_supports, homogenous_transformation) """ initialize SAP2000 and make assigns """ structural = rs.SAP2000_bridge.Structural(rs.config.example) bridge = rs.SAP2000_bridge.Bridge(structural) #bridge._SapObject.Hide() #bridge._SapObject.Unhide() bridge.save_model_in_working_directory() rs.SAP2000_bridge.TextFilesBridge.JointsCreate(nodes_rotated, structural) rs.SAP2000_bridge.TextFilesBridge.FramesCreate(bars_reflector, bars_tension_ring, structural)