Sweeps along Piecewise Linearly Approximated Curves
Examples of mitered joints (by Koos Verhoeff): 1234
Default: Keep cross-section of constant geometry and always perpendicular to tangent vector. This can be achieved by constructing "ribs" in angle-divider plane at all segment junctions, stretching them
by 1/cos(half-angle) in direction of normal vector.
A "natural" orientation of the cross section based on the Frenet frame,
would experience serious torsional twisting around inflection points.
A better orientation of the cross section can be chosen so as to minimize torsion;
the vertices of the cross-sectional polygon are projected forward from
one angle-divider plane to the next parallel to the tangent vector.
For our rollercoaster example, the default orientation of the (track) cross section is most conveniently chosen so as to always point "up" as much as possible. From any of the above default orientations, an Azimuth Angle provides additional rotation around the tangent vector (e.g., to bank the track into sharp curves). These correctional additional azimuth values can be specified at any control point and will be interpolated with the same cubic polynomial as the B-spline.
Once the cross-sectional ribs have been constructed at all the joints,
corresponding vertices of subsequent ribs are connected, and the B-rep
of a (possibly twisted) track is constructed by constructing prism faces between pairs of subsequent ribs.
All these faces together will form a "water-tight" toridal structure of genus 1 (ONE loop). Example of a triply twisted Moebius band forming a trefoil knot -- and a more finely segmented version with the control polygon shown.-- and finally a smooth version with the twist properly adjusted to close that small mismatch.
In Assignment#8 we will make worms/snakes/ribbons/sculptures with the same
principle, but with much fancier surfaces with texture-mapping and bump
mapping.
Ideas for extra credit on Rollercoaster Assignment
1.) Tie track layout to the polygon editor of As#2
Rather than typing in coordinate triplets for the control points,
modify the polygon editor of As#2 to modify the control vertex
positions until you have a rollercoaster that you like. Perhaps you
display two parallel projections of the control polygon for the track as follows:
-- first a top down view that shows the basic layout in which you move vertices only with respect to their (x,y) values;
-- then a side view in which you can adjust the height of the various control points.
2.) Put some texture on the rollercoaster track
To make the track more interesting to move along, and to get a better
sense of the momentary speed of the car, it would be nice to have some
tick marks along the track. A natural way to provide such tick marks
are the ties that carry the rails of the track. A simple way to provide
such a pattern on top of the track is by texture mapping, in
which this pattern is placed repeatedly along the track surface. Texture map of track. (More
on texture mapping in the next assignment).