# 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...

A simple roller-coaster-track implementation program for WINDOWS:

### 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:
• Tangent Vector and the Normal Plane perpendicular to it.
• Normal Vector: Points in direction in which the tangent will change.
• Binormal Vector is the cross product between Tangent and Normal.
• Osculating Plane and Osculating Circle: best fit to a small local neighborhood of the curve.
• There is a difference between Normal and second derivative.
• The three coordinate planes and their relations to the basic 3 coordinate vectors. (diagram).

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.

# SLIDE

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:

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/
That works fine without any need for compilation.

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

```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).http://eecs.berkeley.edu/~jima/sweep_skeletoncode_aug2011.zip