CS 284: CAGD
Project Ideas and General Schedule
General Comments
-
Ideally, each project consists of three parts:
-- some programming to implement some new capability,
-- an interface to the SLIDE environment to make this capability usable
by others in a larger context,
-- some demonstration of this new capability with some neat final result.
-
Keep the projects small and well focussed.
There are only about 5 weeks left after the formal project proposal;
so this does not allow to construct large and elaborate systems. Some of
the ideas below may be too ambitious for a complete implementation; but
you
can do an essential part for any one of them, and demonstrate that you
have mastered the basic concept.
-
Projects can be done alone or in pairs.
Obviously, I expect more from a team of two -- about 50% more than
from a single person
(not twice as much, -- since there is certain amount of overhead from
communication, sharing code, etc.).
-
Ideally projects ideally should concern 1-, 2-, or 3-dimensional spline
manifolds or subdivision structures,
some shape-optimization procedure, or some converter between two different
shape representations.
I would like to see some demonstrable program that shows that you got
something to work based on
what you learned during this course.
General Schedule
Project Ideas
Written submission of two paragraphs describing TWO possible ideas
that you consider to do for your project.
- - due in week 9; (counts for 2% of course grade).
A one-page written submission outlining your chosen project.
- - due in week 10; (counts for 2% of course grade).
Project Proposal Presentation
A 5-minute formal presentation in class of your chosen (and approved)
project.
- - due in week 11; (counts for 8% of course grade).
Project Presentation and Demonstration
A 15-20-minute formal presentation in class of your project implementation
and results.
- - due in week 15; (counts for 20% of course grade).
Project Report
A written documentation of your project and final results obtained.
- - due in week 16; (counts for 10% of course grade).
Possible Projects Concerning Curves
-
C2-Continuous Interpolating Curves (1 pers.)
Find good values for tangent and curvature (i.e., the osculating circle)
at each data point based on the two nearest neighbors on either side. With
these heuristic values one could then fit cubic Hermite curve segments
between every pair of data points.
-
Geodesic Lines on a Given Surface (1 pers.)
A geodesic line on a surface is one for which its normal vector at
every point is in line with the normal vector of the surface; i.e., the
curve bends only as necessary to follow the surface, but does not bend
unnecessarily within the surface. Given an initial starting point and a
starting direction, draw a geodesic line onto surfaces composed of triangle
meshes or spline patches by calculating incrementally the positions of
subsequent Frenet frames. Use the calculated Frenet frames and the sweep
mechanism to draw a semicircular ridge of small diameter onto the surface.
-
De Casteljau on the Sphere (1 pers.)
Implement the de Casteljau algorithm on the sphere, using great circle
arcs instead of straight line segments. Then use these spline curves to
make a tool to interactively draw smooth splines on a sphere surface, and
sweep some cross-sectional profile along it.
-
Global 3D Curve Optimization (1 pers.)
Find a good heuristic approximation to move the control points of a
curve in such a way as to minimize some functional over the arclength of
the curve, e.g., curvature squared, square of curvature derivative, torsion
squared, or combinations of such terms. Then change some of the constraints,
e.g., move the endpoints or some intermediate points to be interpolated,
and watch the curve adjust to the new conditions within seconds.
Possible Projects Concerning Surfaces
-
Interpolating "Root-6" Subdivision surface (1 pers.)
Using the topological structure of the "root-3" subdivision scheme,
find a good algorithm to place the new face-center vertex to obtain pleasing
results for many tough initial polyhedral meshes, then find good positions
near the centers of the old edges.
-
Interpolating Triangle-based Subdivision Surface (2 pers.)
Try to find a way to make a smooth subdivision surface by carrying
only enhanced triangle information from one generation to the next. Add
suitable parameters to each triangle vertex, e.g., averaged normal vectors
and some other values indicating the velocity distribution in the tangent
plane. It should then be possible to construct the next generation of triangles
from this information associated with the three vertices alone.
-
Enhancement to Point-shop 3D (1 or 2 pers.)
Make some enhancement to this down-loadable software, perhaps to do
visualization of intrinsic surface parameters, or carry out surface optimization,
or link to rapid prototyping or manufacturing.
-
Global Surface Optimization (1 pers.)
Use Brakke's Surface Evolver to make some minimal surfaces such as
Costa Surfaces or some other Minimal Energy Surfaces.
-
Boy's Surface (1 pers.)
Make a nice, G2-smooth, 3-fold symmetric representation, including
a nice "regular" texture of Boy's surface.
-
Topological Surface Morph (1 pers.)
Deform a rectangular array of B-Spline patches so as to form one third
of a Boy surface (and from 3 such pieces make the whole surface) similar
to the deformation of one rectangle into a Klein bottle. Generate a sequence
of still images or a 10 second MPEG movie to dynamically demonstrate the
necessary defomation.
-
Moebius Strip + Moebius Strip = Klein Bottle (1 pers.)
Make a series of shapes appropriately rendered that demonstrates that
a Klein bottle can be made from two Moebius bands.
-
Moebius Strip sewn together properly = Klein Bottle (1 pers.)
Make a demon stration sequence that shows that a suitable cut on a
Klein Bottle can result in a single Moebius strip.
Possible Projects with Emphasis on Interaction
-
Global Curve Optimization (1 or 2 pers.)
Build a wavelet-based
curve editor that allows global optimization of 2D or perhaps 3D curves
at interactive speeds.
-
Teaching Demo for Rational Splines (1 or 2 pers.)
Extend the kind of tool that you have played with in the first few
programming assignments to include the domain of rational curves; provide
a user interface that also allows to conveniently explore the effect of
changing weights.
-
Teaching Demo for Surface Patches (1 or 2 pers.)
Create a tool similar to that which you have played with in the first
few programming assignments about curves to provide a teaching and demonstration
environment for B-Spline and/or Bezier patches, including a suitable user
interface and sliders for setting the various parameters.
Possible Projects leading to Part-Fabrication
(perhaps for students who also take CS 294-10)
-
From Implicit or Point-Cloud Representation to SFF (1 or 2 pers.)
Build a converter from an implicit or point-cloud representation of
a surface to the slice description needed for rapid prototyping with layered
manufacturing, e.g., based on marching squares in each slicing plane.
-
Model for a Minimal Surface (1 or 2 pers.)
Make an SFF model of the minimal surface that results when an interesting
knot (say a figure-8 knot or a torus knot) is dipped into a soap solution.
Use the surface evolver or write your own surface "tightener."
-
Model of Boy's Surface (1 or 2 pers.)
Build a model of the Projective Plane in the form of the 3-fold symmetrical
Boy's
Surface. Make the surface thick and "transparent" (perforated) and
with a well-adjusted parametrization, so that the model can be built with
SFF.
Page Editor: Carlo H. Séquin