MakeSurface:
PROC [
surface: Surface,
octreeMode: OctreeMode,
valueProc: ValueProc,
threshold: REAL ← 1.0,
triangulate: BOOL ¬ FALSE,
vertexOkProc: VertexOkProc ← NIL,
polygonOkProc: PolygonOkProc ← NIL,
normalProc: NormalProc ← NIL,
colorProc: ColorProc ← NIL,
textureProc: TextureProc ← NIL,
statusProc: StatusProc ← NIL,
tolerance: REAL ← 0.0001,
edgeMode: EdgeMode ← binarySectioning,
clientData: REF ANY ← NIL];
Polygonize the surface by performing the following steps:
create surface.octree according to octreeMode
adaptively subdivide the octree
create the surface according to the steps given in SurfaceFromOctree, below.
statusProc is called with each cube as it is processed during each step.
MakePolygons:
PROC [
surface: Surface,
valueProc: ValueProc,
threshold: REAL ← 1.0,
triangulate: BOOL ¬ FALSE,
vertexOkProc: VertexOkProc ← NIL,
polygonOkProc: PolygonOkProc ← NIL,
normalProc: NormalProc ← NIL,
colorProc: ColorProc ← NIL,
textureProc: TextureProc ← NIL,
statusProc: StatusProc ← NIL,
tolerance: REAL ← 0.0001,
edgeMode: EdgeMode ← binarySectioning,
clientData: REF ANY ← NIL]
RETURNS [nEvaluations: INT];
Return the polygonized surface given surface.octree according to the following steps:
compute the surface vertices and their normals (even if normalProc is NIL)
polygonize the vertices
compute the polygon face normals
compute the vertex textures (only if textureProc is non-NIL).
tolerance controls the convergence along the cube edges.
statusProc is called with an ATOM after each of the above steps.
statusProc is called with each cube as it is processed during each step.
nEvaluations is just for the setting of all corners and does not include edge converge.