Hi
I'm developing a ray tracing program which is based on GTD(Geometric
Theory of Diffraction). The program will take an input in the form of
CAD geometry containing the various objects(like aeroplane or ****p and
a radar equipment) modeled using NURBS. Can some one please help me
with the following -
1. How must I take a CAD geometry as i/p to a C program ?
2. How must I access each surface using data structure ? Or should I
create a hierarchy like Scene -> Object -> Surface -> Curve -> Segment
-> Points ? Do you think this is too much and would require way too
much memory ? I have already worked out an algorithm for creating a
bounding sphere but the algorithm needs access to points on the object
to determine the extreme values. I was thinking that it would not be
feasible to scan each and every point on the whole object but only a
few sample points which provide uniform coverage.
3. My ray tracer needs to take care of Direct rays reaching the
observer, Creeping Waves( produced when the wave runs along the
geodesic of a curve), Diffraction, Double Reflection, Double
Diffraction etc. Can anyone please tell me how am I supposed to
determine which of the above effects will take place at a particular
surface ? Are their any mathematical forumule for this ? Any
algorithms/code ?
4. I've been told that to find the ray-surface intersection points, I
need to convert NURBS to Bezier patches. Do you know of any algorithm
or code for this ? What are these Bezier patches ? Does this mean the
same thing as converting to Bezier surfaces or does it mean I need to
tessalate the surface into smaller triangles ? Does Bezier patch =
Triangulation ? Also, Do I need to perform the bounding volume test on
each and every patch like this ? Don't you think its too time
consuming ?
5. What is the easiest method for finding these intersection points ?
I have read a thesis paper and it had some really complicated partial
differential equations which must be solved by Conjugate Gradient
Method to give the intersection points. Do you know of some easier
method ?
Please help
Regards