from compas.geometry import Frame from compas.geometry import Box from compas.datastructures import Mesh from compas_rhino.artists import FrameArtist from compas_rhino.artists import MeshArtist # Box in the world coordinate system frame = Frame([1, 0, 0], [-0.45, 0.1, 0.3], [1, 0, 0]) width, length, height = 1, 1, 1 box = Box(frame, width, length, height) # Frame F representing a coordinate system F = Frame([2, 2, 2], [0.978, 0.010, -0.210], [0.090, 0.882, 0.463]) # Represent box frame in frame F and construct new box box_frame_transformed = F.to_world_coords(box.frame) box_transformed = Box(box_frame_transformed, width, length, height) print("Box frame transformed:", box_transformed.frame) # create artists artist1 = FrameArtist(Frame.worldXY()) artist2 = MeshArtist(Mesh.from_shape(box)) artist3 = FrameArtist(F) artist4 = MeshArtist(Mesh.from_shape(box_transformed)) # draw artist1.draw() artist2.draw_faces() artist3.draw() artist4.draw_faces()
"""Example: 'frame in frame' """ from compas.geometry import Point from compas.geometry import Vector from compas.geometry import Frame point = Point(146.00, 150.00, 161.50) xaxis = Vector(0.9767, 0.0010, -0.214) yaxis = Vector(0.1002, 0.8818, 0.4609) F0 = Frame(point, xaxis, yaxis) # coordinate system F0 point = Point(35., 35., 35.) xaxis = Vector(0.604, 0.430, 0.671) yaxis = Vector(-0.631, 0.772, 0.074) f_lcf = Frame(point, xaxis, yaxis) # frame f_lcf in F0 (local coordinates) # frame in global (world) coordinate system f_wcf = F0.to_world_coords(f_lcf) print(f_wcf) f_lcf2 = F0.to_local_coords(f_wcf) # world coords back to local coords print(f_lcf2) # should equal f_lcf print(f_lcf == f_lcf2)
"""Example: 'point in frame' The simple example above shows how to use a frame as a coordinate system: Starting from a point `P` in the local (user-defined, relative) coordinate system of frame `F`, i.e. its position is relative to the origin and orientation of `F`, we want to get the position `P_` of `P` in the global (world, absolute) coordinate system. """ from compas.geometry import Point from compas.geometry import Vector from compas.geometry import Frame from compas.geometry import allclose point = Point(146.00, 150.00, 161.50) xaxis = Vector(0.9767, 0.0010, -0.214) yaxis = Vector(0.1002, 0.8818, 0.4609) F = Frame(point, xaxis, yaxis) # coordinate system F P = Point(35., 35., 35.) # point in F (local coordinates) P_ = F.to_world_coords(P) # point in global (world) coordinates print("The point's world coordinates: {}".format(P_)) P2 = F.to_local_coords(P_) print("The point's local coordinates: {}".format(P2)) # should equal P print(allclose(P2, P))