## \example rigid_bodies.py ## Show how to properly extract coordinates in the presence of rigid bodies. import RMF # print out transformed coordinates def print_coordinates(reference_frame, coords): print reference_frame.get_global_coordinates(coords) # walk through the hierarchy visiting each node and extracting coordinates def visit(node, reference_frame, reference_frame_factory, particle_factory, segment_factory, ball_factory): if reference_frame_factory.get_is(node): reference_frame= RMF.CoordinateTransformer(reference_frame, reference_frame_factory.get(node)) print "reference frame is now", reference_frame elif segment_factory.get_is(node): segment= segment_factory.get(node) print "segment", node.get_name() # silliness coords= segment.get_coordinates() for i in range(0, len(coords[0])): print_coordinates(reference_frame, [coords[0][i], coords[1][i], coords[2][i]]) elif particle_factory.get_is(node): particle= particle_factory.get(node) print "particle", node.get_name(), print_coordinates(reference_frame, particle.get_coordinates()) elif ball_factory.get_is(node): particle= ball_factory.get(node) print "ball", node.get_name(), print_coordinates(reference_frame, particle.get_coordinates()) for c in node.get_children(): visit(c, reference_frame, reference_frame_factory, particle_factory, segment_factory, ball_factory); fh = RMF.open_rmf_file_read_only(RMF.get_example_path("reference_frames.rmf")) visit(fh.get_root_node(), RMF.CoordinateTransformer(), RMF.ReferenceFrameConstFactory(fh), RMF.ParticleConstFactory(fh), RMF.SegmentConstFactory(fh), RMF.BallConstFactory(fh))