The basic idea is essentially the same as the standard predictor
corrector algorithm:

1) find one point on the curve;

2) compute a tangent vector to the curve at that point;

3) step out a small amount along the tangent vector;

4) relocate the curve at a new point, and store the singular data
for later use;

5) go to step (2).

We want to emphasize that the singular curve (if it exists) is the solution of the over-determined system of the equations:

Letf=0,

f_{x}=0,

f_{y}=0,

f_{z}=0.

In order to accomplish step (1), we first use Newton's method
on the system formed by *F* to find roots of *F*. Each root is a
candidate solution to *(f,F)=(0,0).* As we attempt to
iterate onto the singular curve,
Newton's method will eventually
complain at some point, say *x _{k}*, since

For instance, let *f=x ^{2} - y^{2}* then

Therefore we find the candidate2x=0,

-2y=0,

(x-a,y-b,z-c).(0,0,1)=0, that is z-c =0.

If we encounter a point *x _{0}* on the curve with

In step (2), as we mentioned above, we use the null space of
*DF(x _{0})*
to compute the tangent of the singular curve at

For steps (3) and (4), we pick two equations from the system
*F=0*, based on
which two row vectors of *DF(x _{0})* are linearly independent.
Then we add the
third equation:

We remark that we save the singular curve as a list of arcs for later use. Each arc contains a list of points on the singular curve and tangent vectors at each point.

To fill in the local structure, we do the following

1) form a cylinder around the singular curve;

2) trace the boundary curve (the intersection of the level set
and the cylinder), and store the data for the regular two-parameter
continuation to trace the rest of the level surface;

3) triangulate the surface between the boundary curve and the singular
curve.

Assume that *s(t)* is a parameterization of the singular curve. Then
the cylinder of radius *r* in step (1) may be characterized by

where(x-s(t)).(x-s(t))-r^{2}=0;

(x-s(t)).s'(t)=0;

Note that the domain of the system is four dimensional (including(x-s(t)).(x-s(t))-r^{2}=0;

(x-s(t)).s'(t)=0;

f(x)=0.

We trace the boundary curve "arc by arc" as we traverse the singular curve.
For example, let *x _{0}* and

The meaning of the five parameters below is pretty much the same as the standard predcorr algorithm. They were documented in detail in the documentation for the Predictor-Corrector Algorithm.

1. Step_Length | Default value: 0.02 |

2. Max_Steps | Default value: 120 |

3. Random_Points | Default value: 0 |

4. Selected_Points | Default value: 0 |

5. Uniform_Points | Default value: 3 |

The following parameters are specific to Sing3D algorithm.

6. Display_IP | Default value: 1 |

7. Radius | Default value: 0.3 |

8. Zero_Vector_Tol | Default value: 0.001 |

9. Boundary_Smoother | Default value: 1.5 |

10. Circle_Division | Default value: 100 |

11. Trace_Boundary_Curve | Default value: 1 |

Comments to: pisces@geom.umn.edu

Last modified: Tue Jun 4 16:33:30 1996

Copyright © 1995 by The Geometry Center, all rights reserved.