3D-Modeler
John Spatz & Kris Schmelzer


Surfaces of Revolution


A surface of revolution is a surface generated by rotating a two-dimensional curve about an axis.
This rotation will create a 3D object.


Eric W. Weisstein. "Apple." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/Apple.html

The above shows a simple surface of revolution called "The Apple".  This surface of revolution was defined by Johannes Kepler.  
It consists of more than half of a circular arc rotated about an axis passing through the endpoints of the arc.

                                      
The above is taken from our C++ code to create a surface of revolution.  The image on the left is the resulting wireframe image that our
algorithm creates, and the image on the right, is the points it used to create the wireframe.

To accomplish the creation of the above object, an input file is read in.  This imput file contains two types of information:
1.  The number of points to be used initially to create the two-dimensional curve that is to be rotated.
2.  Each of those points coordinates, written in X, Y form.                                                              

For example, the above objects input file is displayed below in its entirety.

9
0 0
3 1
4 2
7 3
10 4
7 5
4 6
3 7
0 8

The first line would be read in as the number of points, and each subsequent line thereafter would be read in as a set of X and Y values that make
up the first, second, third and so on points.  The program will then take the first point in the file (in the above case (0, 0)) and rotates this point
around the y-axis in a complete 360 degree circle, creating a new point in 10 degree intervals and storing these points into an array.
This process is then repeated for every subsequent point in the file, in the end this will give you the image on the right.
You then have the option, by right clicking to bring up a menu, to connect these points with solid lines, thereby creating a wireframe of the object (seen on the left).

More Examples:

                                   


Input File


Problems encountered:
 Doing the computations for an object that doesn't have its first
and last points connected to the y-axis is difficult. That is why our
examples and our code deal with objects that have points incident with the
y-axis.

A Bad Input File Example

Extrusion


"Extrusion is the simplest of a set of modeling transformations which involve moving a uniform cross-section along a path in space. Thus, extrusion involves a 2D shape (s) and a straight line-segment (p1-p2) in space, as shown in the figure at right.  The 2D shape determines the cross-section of the extruded form. The line-segment marks the starting and ending points of the extruded form in space.  The resulting form is generated in two steps. In the first step, the cross-section shape is duplicated to create the top and bottom of the result. In the second step, the top and bottom are joined together with parallel sides. Faces are generated in each case such that they face outward. " - http://online.caup.washington.edu/courses/arch481/00HomePage/1.Tapestry%20Reader/1.Data/4.Modeling/1.Extrusion.html

Example of Extrusion:

 

Input File

A more complicated version of extrusion is known as Sweeping.  Sweeps, while in concept very similar to extrusions, can involve a much more complicated path.

More complicated Example:

                           
                                                                                                                                                                     http://online.caup.washington.edu/courses/arch481/00HomePage/1.Tapestry%20Reader/1.Data/4.Modeling/3.Sweeps.html

In the above example known as the form•Z sweep,  "The red rectangle is going to be swept along the splined path to form a complex meshed object using Nurbs.  The resulting form is generated by moving the cross-section in steps along the path, each time perpendicular to the local path segment, and connecting it with the polygons already generated. "
- http://online.caup.washington.edu/courses/arch481/00HomePage/1.Tapestry%20Reader/1.Data/4.Modeling/3.Sweeps.html


Again we will take input from a input file. First we will extrude that surface by some line that will also be given in the file. This will bascially construct a 3D version of the object. Then we will extend this to be extruded by multiple lines. So that the object is not only a straight prism, but a combination of movement(turns in the shape).
For this we make the assumption that the object will be extruded by straight lines.



Problems Encountered:

When extruding a surface by something other than a straight line
there is added difficulty because you have to figure out how to connect the
polygons when the direction of the extruding is changed. This is
illistrated in the complex image above.


A Bad Input File Example




Lofting

The concept of lofting is simply connecting two polygonal contours together with a triangular mesh, producing a surface.  However, actually connecting the surfaces using a triangle mesh is only needed when there is a difference in the number of points used to define the surface.  Lofting is often referred to as skinning or surface reconstruction.  Lofting can be used to create complicated objects projected along paths with varying cross sections.
Basic Lofting can be broken in two important sections:
Correspondence & Tiling

Correspondence is matching the contours of your object that should be connected.
Tiling is the actual generation of the triangle mesh or strip that connects those contours.

For our example, we simply used surfaces that are defined using the same number of points for each.
Again input will be read from a file, but in this instance for multiple polygons. These polygons will then be connected to make a 3D object.  
A few assumptions are made in order for this to work:

                                 1.  The polygons will have the same number of sides.
                                 2.  The points will be ordered in the same way (clockwise or counter-clockwise).
                                 3.  The polygons that are entered must be entered in sequential order.

A simple lofting example:

                                                                      

Another Example:

                                                                


Input File

More Complicated Lofting Example:

"Lofting between circles of different sizes and numbers of segments. "


                                                                              image taken from http://www.raudins.com/glenn/projects/lofting/default.htm




Problems Encountered:
Correspondence is one of the main difficulties. Finding a
correspondence between polygons that do not have the same amount of
vertices so that a triangle mesh can be made is difficult.


Useful Links

Work Log

Source Code

David Meyers Dissertation (Lofting)

Henry Fuchs Paper on Lofting

Surfaces of Revolution

Mathworld Surfaces of Revolution Images

Extrusion and Sweeps Information

Information on Lofting