This page serves as the main documentation of the
program illiShaper, written by Ben Farmer and Dr. Paul
McCreary during the summer of 2002. The intent is give
the reader a "working knowledge" of what the program does,
and how it does it.
The program started first as a skel. It was a project for
Math198 in the spring semester of 2000. It was then transformed
the following year to work in the CAVE. After that it was
changed drastically to into the Bishop Coaster. The main objective
of the Bishop Coaster was to illustrate the difference between the
Frenet frame and the Bishop frame of a well defined three-dimensional
space curve. The curve we chose was a
lissajou.
The main objective of illiShaper is to steer a curve's shape by changing
it's
development functions. This
allows the for the study of curve parameters as well as for experiments
designed to learn more about a curve by analyzing its development.
When writing the program, I tried to make the individual functions as
independent of each other as possible. The functions do, however usually
depend heavily on the existence of specific global variables and definitions.
If these variables and definitions are not present, the code will not compile.
The functions are loosly divided into three groups: calculation functions,
drawing functions, and miscellaneous functions. The calculation functions
are usually prefixed with "calculate" and perform only numerical calculations.
The drawing functions are usually prefixed with "draw" and perform the openGL
drawing commands. The miscellaneous fucntions are the functions that
do not fit into the other two categories. The functions that handle
the picking are such functions.
This is the list of calculation functions:
- calculatefram(void)
- calculatecardinalspline(float P0, float P1, float P2, float P3, float paramT)
- calculatedevelopment1(void)
- calculatedevelopment2(void)
- calculatelissajou(void)
- calculatefrenet(void)
- calculatefrenetcurve(void)
- calculatebishopcurve(void)
- calculatebishopliss(void)
- computelissajou(void)
- computecurve(void)
This is the list of drawing functions:
- drawdevelopment1(void)
- drawdevelopment2(void)
- drawdevelopmentcurve(void)
- drawcontrolpoints1(void)
- drawcontrolpoints2(void)
- drawaxis(void)
- drawcube(void)
- drawcontrail(void)
- drawdoghouse(void)
- drawcar(void)
- drawtrackvehicles(void)
- drawframedlissajou(void)
- drawframedcurve(void)
- drawcurve(void)
- drawlissajou(void)
- drawdevelopmentvehicle(void)
- drawtheslate(void)
This is the list of the miscellaneous fucntions:
- initpoints(void)
- invert(float *inv, float *mat)
- updatecontrail(void)
- odometer(void)
- updateTT(int updown, int whichupdate)
- opendevelompentfile(void)
- savedevelompentfile(void)
- deFault(void)
- dragtrack(int but, int xx, int yy, int shif)
- processhits((GLint numbHits, GLuint buffer[])
- viewfrom(int lcockpit)
- drawslate(void)
- mousepushed()
- idle()
- getmem()