Polygons are extruded as follows: if the "capping" instance variable is on, each polygon is replicated twice (once in the current position and once at the final position). If any of the polygon edges is a free edge, i.e., the edge is not used by any other polygon, then the edge sweeps out a new surface (a "skirt"). If capping is "off", then only free edges create new surfaces.
Lines are treated as free edges: that is, each line is swept in the extrusion direction to create a new surface.
resolution the number of steps (facets) as the data is extruded from its original position to its final position.
angle the total angle of rotation (in degrees). Angles greater than 360 degrees result in multiple circuits around the y-axis.
delta_radius the total change in radius from the start position to the end position.
translation the total translation of the object along the y- axis.
capping_on! turn object capping on.
capping_off! turn object capping off.
capping= value set the capping boolean
capping? get the capping boolean
resolution=/+ value set/add to the resolution instance variable.
resolution? get the resolution value.
angle=/+ value set/add to the angle instance variable.
angle? get the angle value.
delta_radius=/+ value set/add to the delta_radius instance variable.
delta_radius? get the delta_radius value.
translation=/+ value set/add to the translation instance variable.
translation? get the translation value.
generate_data! create the extruded data from the input data.
1,2,3,4,5,6,7,8 ) polygons=( 8,1,2,3,4,5,6,7,8 ) ; rotational_extrusion_filter new: ref data_in= spring_xsection resolution= 144 angle= 2160 translation= 11.52 delta_radius= -2.5 capping_on! ; display_all new: da data_in= ref range=(1,8) ; actor new: spring modeller= da ; /* * Generate a shock absorber */ display_data new: shock_xsection points=( 0,0,0, 1,0,0, 1,10,0, 1.5,10,0, 1.5,20,0, 0,20,0, ) scalars=( 1,1,1,2,2,2, ) lines=( 6,1,2,3,4,5,6, ) ; rotational_extrusion_filter new: ref2 data_in= shock_xsection resolution= 24 angle= 360 ; display_all new: da2 data_in= ref2 range=(1,2) ; actor new: shock modeller= da2 ; camera new: acamera range= [da bounds?]
position= (1,1,1) default! on! ; renderer new: aren actors=[actor instances?] cameras=[camera instances?] render! ;