Going from a geometric concept/problem to a working program usually takes several steps as follows:
Since computers do not understand geometry, one must convert a geometric problem to an algebraic one that uses numbers. Then, one can design algorithms to manipulate these numbers and finally, programs are developed based on these algorithms. However, each step is a difficult and challenging task.
A geometric object's representation is usually not unique. A circle can be represented by an implicit equation:
or in a parametric form using trigonometric functions:
where t is in the range of 0 and 360 degree.
Some geometric objects such as polyhedra many even require complex data structures to represent all of its details. Therefore, finding a good and appropriate representation (for a particular application) is usually a very challenging task. We shall cover some of these representations in this course. Some are mathematical (for curves and surfaces) and some are combinatorial (for polyhedra). Whatever representation is chosen, it must be easy to use and manipulate, and support all desired operations efficiently and accurately.
In addition to a representation for a particular type of geometric objects, one must convert geometric operations to algebraic forms, too. Take a look at the following question. Given a sphere of radius r, what is the locus of this sphere if its center moves on a curve? We know that the locus, usually referred to as a sweep, looks like a tube; but, it is not so easy to know what exactly this tube looks like. If the curve is a line, the locus is a cylinder. The difficult part is that the curve is not a line and/or that the radius of the given sphere can change. Therefore, we have an easily described geometric operation whose algebraic counterpart is somewhat complicated.
Then, if they are parallel to each other (i.e., A*V=B*U), there is no intersection point; otherwise, the intersection point can be found by solving the above simultaneous linear equations of two variables.
Unfortunately, other practical problems are not so easy. First, the representation of a geometric object such as a piston engine or the Boeing 777 is huge and the number of equations, usually non-linear ones with many variables, is also huge. Manipulating these representations and equations is not an easy job. However, we have at least the following choices:
Therefore, the answers are algebraic rather than numerical. There are good symbolic systems available (e.g., Mathematica and Maple). Computation cost is usually very high (e.g. very slow). On the other hand, symbolic computation is able to give you a closed-form solution, a form that can be written in one or more formulae.
where n is a positive integer. This equation has a root at zero. But, Newton's method will not converge to zero at all. Try it yourself.
The above does not enumerate all possibilities. One can combine several ways together to solve a single problem. For example, one can use symbolic to solve some parts of the problem and use a combination of numerical computation and approximation to do the remaining.
Recently, some authors suggested the so-called geometric methods whose fundamental merit involves characterizing the results using geometry reasoning and using the characterization for calculating the result. This method usually work fine with simple problems and may require a large number of case-by-case analysis. However, if geometric method works, it usually delivers the solution fast and is more accurate and robust than other methods. We will not pursue in this direction in this course.
In this course, we shall introduce several representations for curves, surfaces and solids and their accompanying geometric operations. We shall spend a considerable amount of time on curves and surfaces design using approximation. Another point we want to emphasize is the impact of floating number computations on geometric problems. Some classical computational geometry problems will also be mentioned, because they are useful and can illustrate what computational geometers are doing.