You have probably been wondering[if you
have read the first page on my site] what this ESOLID
is all about, what does it do, and may be how am I going to extend it.
Well we are on the same page. The information I am going to provide is
the best to my knowledge as of now and is subject to change once I
fully and deeply comprehend the key concepts involved in this project.
1.
Prerequisites
In this section, I would define and explain terms
or
concepts that are important to my work. However, if you are already
familiar with these concepts, you can skip this section.
Solid: is a
[3D]geometric object such a sphere, a cylinder or a cone.
Boolean
operation:
refers to an operation that can be performed on at least two solids.
The result is a new solid. Examples of boolean operations are
difference, union, intersection[The figure below illustrate this]. One
might notice that these operations are equivalent to the ones that can
be performed on a set. Thus, one way to clarify things is to look at a
solid as a set of points or a set of curves, or a set of
surfaces.

Boudary
Evaluation:
involves computing the boundaries of the result of a boolean
operation[among solids]. In the figure above, I have
highlighted
in red, the result's boundaries in red.
Exact
computation:
is a technique or set of techniques used to reduce if not eliminate
numerical errors(ie: round-off, truncation) during computation. An
example would be representing a rational number as a couple[{(x, y)
where x and y are both integers and y is not zero}] instead of one
single floating point number that will eventually be rounded or
truncated by the computer. For instance, 1/3 would be (1, 3) instead of
0.33333.
ESOLID:
is a system for boundary evaluation using exact computation or a system
for Exact Boundary Evaluation. Pr Keyser has been one of the developer.
2.
Where I come in.
ESOLID is a system that takes two
solids and an
operation as inputs. Then it produces a new solid which is the result
of the boolean operation performed on those solids. However, there is a
substancial inconsistency between the input and output
format. ESOLID cannot read an output previousy written. Moreover, the
current viewer is too simple to outline very important details about
the output geometry. Thus, this summer, the main plan is to implement a
load/save module which would allow for more complex 3D models to be
produced easily. If time permits, I will also make ESOLID more user
friendly by implementing a routine to automate multiple boolean
operations at once. Finally I would add a routine to aid the viewer
display more detailed information about a geometry.
3.
Roadmap
Here is a very abstract outline that I
will follow
to accomplish the main goal. I will not work on these task in a
chronological order since some of them could be done concurrently.
Also, more details would be added to this later when things become
clearly defined and set.
- Read
Papers on theory
- Get
ESOLID, compile it and run it
- Learn
OpenGL
- Understand
the I/O system of ESOLID
- Be
able to generate sample data for ESOLID
- Define
a uniform file format for input and output
- Develop
the load/save module using the defined file format
- Create
a method to automatically perform multiple boolean operations at once.
- Extend the
viewer by making it display more detailed information about a geometry
- Write a
user documentation for all the added features.
If you have more questions or something is unclear, email me at
gsd4x@virginia.edu