Lecture #4 -- Monday, Sept. 12, 2011

PREVIOUS < - - - - > CS 285 HOME < - - - - > CURRENT < - - - - > NEXT

 Brain-storming:  Outline a good structure for a roller-coaster track generator
                                that generates an interesting, convoluted, knotted track.

For instance, your client has a rectangular field on which he wants to place a densly intertwined roller-coaster track,
but with limited use of the third dimension to keep cost down. He wants a variety of different track proposals to choose from...

If you have access to a WINDOWS machine: 
A simple roller-coaster-track implementation program for WINDOWS:
see also Assignment#7 of CS 184, Spring 2011.

Today's Topics:

Knots, Celtic Knots, Space Curves, Mitred Solid Sweeps, Hamiltonian Cycles,
SLIDE Semantics, Hierarchical Scene Descriptions.

What is a (mathematical) Knot?

-- Knot table.

Structured, 2-layer knots.
-- Celtic knots.

Other structured ways for generating (polygonal, piece-wise linear) paths through 3D space:
-- Hamiltonian cycles on (regular) polyhedra (PPT);
-- Recursive formulations: e.g., Hilbert curve (PPT).

Wrap-up on Smooth Space Curves and Sweeps  (look also at notes in Lecture #2)

The Frenet frame: An intrinsic coordiante system defined by a local neighborhood on a curve:

B-reps of solid sweeps along (polygonal, piece-wise linear) paths through 3D space:
-- Examples of mitered joints (by Koos Verhoeff): 1 2 3 4    (by CHS): 5  

-- Closing a loop without visual mismatch:
Note: the individual segments should look completely free of twist!
However, overall there may be some built-in torsion: if you slide once around the whole curve, always staying in the same "face,"
you may end up on a different facet than the one that you started in! -- The simplest case (This space curve has an inherent twist of 90-degrees).

-- Proper mitring at each corner:
Default construction:  Keep a cross-section of constant geometry and always positioned perpendicular to the tangent vector.
This can be achieved by constructing "ribs" in the angle-divider plane at all segment junctions,
and stretching them by 1/cos(half-angle) in the direction of the normal vector.  Now, we still have to fix the azimuth angle.
A "natural" orientation of the cross section would be based on the Frenet frame (x-axis pointing in curve-normal direction),
but it would lead to serious torsional twisting around inflection points.
A better orientation of the cross section can be chosen so as to minimize torsion; (also called rotation-minimizing frames = RMFs):
The vertices of the cross-sectional polygon are projected forward from one angle-divider plane to the next, parallel to the tangent vector.

-- Construction of the complete B-rep:
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" B-rep of a generalized sweep, in particular, a toridal structure of genus 1 (ONE loop). 
Any smooth space curve will be sampled finely and thereby converted into a piece-wise linear approximation.
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.

Pax Mundi (fabrication process) -- PPT


The sweep description in SLIDE

Comments on the Semantics of SLIDE;
Hierarchical Scene Descriptions:

vertices  <--  faces  <--  objects  <--  instances of objects (and/or groups)  <--  groups  <--  instances of groups
(Unlimited upward extension of this hierarchy).

Install SLIDE on your own computer:

A recent experience:
I found that I had to download a different distribution than what was on http://www.cs.berkeley.edu/~ug/slide/viewer/

Instead of http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/slide2004.tar.gz , which only contained Windows-specific libraries, etc.,
I looked http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/
and downloaded http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/old_slide2004.tar.gz
That works fine without any need for compilation.
I just followed the README at http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/README.

These were the successful parameter settings:
ITCL_LIBRARY    c:/slide/lib/itcl3.0/itcl/library
ITK_LIBRARY    c:/slide/lib/itcl3.0/itk/library
Path    c:\slide\bin;c:\slide\bin\SYSTEM\NT;%Path%
SLIDE_LIBRARY   "c:/slide/lib"
TCL_LIBRARY   c:/slide/lib/tcl8.0/library
TK_LIBRARY   c:/slide/lib/tk8.0/library

More information for the Windows system are here: http://www.cs.berkeley.edu/~ug/slide/pipeline/assignments/instructions.shtml
 (see comments on "Installation")

Escape hatch: Later in the course you may use whatever software modeling environment you are comfortable with.
To help with creating your own environment: 
Here's a link to the sweep framework (with gui) that we used in CS 184 last semester.
It should work on windows, mac and linux (tested on the hive cluster in soda 330).


Comments on Homework Assignment (9/7 to 9/14):

A#2:Using SLIDE to create interactive Venn diagrams

PREVIOUS < - - - - > CS 285 HOME < - - - - > CURRENT < - - - - > NEXT
Page Editor: Carlo H. Séquin