from mayavi import mlab from Space import Space from Space.Figure.Sphere import * from Space.Figure.Cylinder import CylindricalWedge, Cylinder from Space.Figure.Cone import ConicalWedge from Space.Figure.Torus import ToricWedge from Space.Figure.Cube import Parallelepiped, ParallelepipedTriclinic, Cuboid, Cube from Space.Curve.Parametric import Arc from Space.Coordinates import Cartesian import Space_visualization as Visual fig = mlab.figure('CS demo', bgcolor=(0.5, 0.5, 0.5)) # Create the mayavi figure joint_disc_cs = Cartesian() joint_disc_cs.euler_angles = (0, np.pi/2, 0) joint_disc = Cylinder(name='Moon', coordinate_system=joint_disc_cs, r_inner=0.0, r_outer=1.5, z=[-1.0, 1.0]) rod = Cylinder(name='Moon', coordinate_system=Cartesian(origin=[0.0, 0.0, 0.0]), r_inner=0.3, r_outer=0.5, z=[0.0, 4]) box = ParallelepipedTriclinic(name='Parallelepiped', a=1, b=1, c=1, alpha=np.pi/4, beta=np.pi/4, gamma=np.pi/4) #wedge = SphericalWedge(r_inner=5, r_outer=7, phi=2*np.pi*0.7, theta=[np.pi/4*0, np.pi/3]) wedge = ConicalWedge(phi=2*np.pi, theta=np.pi/4, z=np.array([0, 1.0]), z_offset=0.4, r_min=0.3) #wedge = ToricWedge(r_torus=1.0, r_tube=[0.25, 1.5], phi=np.pi, theta=np.array([-np.pi, 0])) print('V =', wedge.volume()) print('S = ', wedge.surface_area()) joint_vis = Visual.FigureView(fig, joint_disc, color=(0, 1, 0)) rod_vis = Visual.FigureView(fig, rod) box_vis = Visual.FigureView(fig, box) wedge_vis = Visual.FigureView(fig, wedge)
from Space.Coordinates import Cartesian import Space_visualization as Visual # Euler's angles are used in the proper notation Z (phi1) - X' (Phi) - Z" (phi2) # phi1 and phi2 are defined to have modulo 2*pi radians [-pi; pi] or [0; 2*pi] # Phi is defined to have modulo pi radians [-pi/2; pi/2] or [0; pi] M = 10 N = 5 # Here we use degrees and numpy deg2rad for conversion scale = min(360 / (2 * M), 180 / (2 * N)) # scale factor for mayavi scene fig = mlab.figure('CS demo', bgcolor=(0, 0, 0)) # Create the mayavi figure for phi1 in np.linspace(0, 360, M, endpoint=True): for Phi in np.linspace(0, 180, N, endpoint=True): for phi2 in np.linspace(0, 360, M, endpoint=True): euler_angles = np.deg2rad(np.array([phi1, Phi, phi2])) # Create cartesian coordinate system CS = Cartesian(origin=np.array([phi1, Phi, phi2]), labels=['i1', 'i2', 'i3'],) #euler_angles_convention='Bunge') # Set CS orientation using Euler's angles CS.euler_angles = euler_angles # CS_box visualize CS as a cube colored according to Euler's angles Visual.draw_coordinate_system_box(fig, CS, scale=scale, draw_axes=False) # mlab.outline(extent=[0, 360, 0, 180, 0, 360]) # uncomment to draw white outline mlab.show()