# Volume by cross sections # Calculus visualization models # by Lloyd for James # Intended to 3-D print # # Smooth example # define pi 3.14159265 # object dimensions define tri_edge 1.0 define length 6.0 define maxsize 5.0 # Define an equilateral triangle shape with unit sides define tan60 60 * $pi / 180 %tan define tri_height $tri_edge / 2. * $tan60 curve interpolated etri start -1.0 * $tri_edge / 2.0 0.0 line 0.0 $tri_height line $tri_edge / 2.0 0.0 line -1.0 * $tri_edge / 2.0 0.0 # object dome paratri curve1 etri c1_xscale $maxsize c1_yscale $maxsize length -1.0 * $length taper para nodes_axial 20 nodes_circ 4 object dome endcap taper bulk # move flip list variables write vrml para-tri1.wrl write stl para-tri1.stl # # discrete version new define nseg 10 define seglen $length / $nseg define scale $nseg - 0.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk transz 0.0 object dome cap1 taper bulk transz -1.0 * $seglen define scale $nseg - 1.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk define scale $nseg - 2.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk define scale $nseg - 3.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 ' object dome cap1 taper bulk define scale $nseg - 4.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk define scale $nseg - 5.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk define scale $nseg - 6.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk define scale $nseg - 7.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk define scale $nseg - 8.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk define scale $nseg - 9.5 / $nseg %sqrt object section section1 curve1 etri curve2 etri c1_xscale $maxsize * $scale c1_yscale $maxsize * $scale c2_xscale $maxsize * $scale c2_yscale $maxsize * $scale length -1.0 * $seglen nodes_circ 4 nodes_axial 2 object dome cap1 taper bulk move flip write vrml para-tri2.wrl write stl para-tri2.stl end