# Introduction

SingSurf is program to visualise mathematical curves and surfaces. The program can calculate many of the objects found in Singularity theory and geometry:

## Basic types created

Algebraic curves defined by a single polynomial equation in two variables. e.g. electric motor `y^2(y^2-9)-x^2(x^2-10);` Algebraic surfaces defined by a single polynomial equation in three variables. e.g. a Chubs surface `x^4 + y^4 + z^4 - x^2 - y^2 - z^2 + 0.5;` Parameterised curves defined by a 3D vector expression in a single variable. e.g. a helix `[cos(pi t), sin(pi t), t];` Parameterised surfaces defined by a 3D vector expression in two variables. e.g. a cross-cap `[x,x y,y^2]` Intersection of surfaces with sets defined by another equation. For example the intersection of a conical surface with the set defined by a plane `a x b y + cz =d`. This module can be used to calculate non-polynomial curves. For example a super ellipse `pow(abs(x/a),p)+pow(abs(y/b),p)-1` Clipping, part of a surface inside a set define by an implicit equation, like the set inside a box `min(min(min(xh-x,x-xl),min(yh-y,y-yl)),min(zh-z,z-zl))`, or clipped by a sphere `x^2+y^2+z^2-r^2` Mapping from R^3 to R^3 defined by 3D vector equation in three variables. e.g. a rotation `[cos(pi th) x - sin(pi th) y,sin(pi th) x + cos(pi th) y,z];` Vector Fields, including unoriented vector field, and binary differential equations Integral Curves. Uses the points in a geometry to define the starting points Colourise: sets the colour of a surface depending on an expression. For example to colour by the z coordinate `[(z+1), 0,(1-z)];` setting the red, green, and blue components for each point. Extrude: produces surfaces of revolution and similar surfaces which depend on a curve and an equation. Can be used to produce families of curves. ## Generalised Operations

Several of these models have versions where the equation of another curve or surface can be used as part of the definition

Generalised Mappings where the equation depends on another surface. For example projection of a curve onto a surface. For example Gauss Map of a surface

``````    N / sqrt(N.N);   // Unit normal
N = Sx ^^ Sy;    // calculate normal using cross product
Sx = diff(S,x);  // derivatives of surface S
Sy = diff(S,y);  // Definition of S read from the input surface`````` Generalised Intersections where the equation depends on the definition of another curve or surface. e.g. The profile of a surface, or parabolic lines

``````        // The profile of a surface
N . [A,B,C];
N = diff(S,x) ^^ diff(S,y);	`````` Generalised Clipping: e.g. the part of surface contained inside another already defined implicit surface

Generalised Colourise: colour by Gaussian or mean curvature Generalised Extrude: e.g. tangent developable of a curve, or envelope of normals

``````        S + t T;            // Point on surface plus a multiple of unit tangent
T = TT/sqrt(TT.TT); // unit length
TT = diff(S,x);     // tangent to curve`````` Generalised Vector Fields: e.g. principle directions which are calculated using the definition of the input surface Generalised Integrals Curves: e.g. principle curves of a surface calculated using the definition of the input surface ## Specialised modules

Ridge Intersections: curves which depend on a surface and a vector field, for example the ridges of a surface BiIntersection Intersections where the equations depends on a pair of curves. For example the pre-symmetry set of a curve.

BiMap Mapping where the equation depends on a pair of curves. For example the Symmetry set. Projective varieties: algebraic surfaces defined in real projective space, with options for stereographic projections and rotations in 4D 