Main applet window General Help JavaView
Version 1/sqrt(tau) = 0.78615138, 6 June 2003
A major update of the asurf program. It has now can give almost perfect
results for most types of singularities. Specifically
- It can read a data file with the known positions of singularities.
Used with Oliver Labs' program
which incorperates Singular (for algerbraic computation) and Surf for
- More work has gone into the correct treatment of faces and regions containing singularities.
Several new conditions are now tested to try to deduce the geometry, especially cross-caps, cuspidal edges
and triple points where second derivative info is now used.
- The routine for merging facets has been rewritten. Some post processing
is caried out to remove unwanted facets.
- Several major speedups obtained by changing the order of computation.
(3 routines take 75% of the time).
- A new web page with a pictorial index of all the surfaces added. Split in Asurf and Pro
- Theres now a few easter eggs in the syntax of equations:
# The following selects a specific box at the specified depth,
# only the component inside that box is drawn.
# This line causes the curves df/dx=0, df/dy=0, df/dz=0 to be drawn.
Version (1+sqrt(5))/2-1 = 1/tau = tau-1 = 0.61803399 May Day 2003
Interim release hence the irational version number.
Major new features:
The mapping, intersect, and icurve programs have not been
adapted to run under JavaView. These allow such things as Parabolic
lines, Ridges, Symmetry Sets and focal surfaces to be calculated.
The algebraic surface program
has also been improved to make a better job around singular points.
Major missing features: (yet to come)
No load/save for definitions.
I'd like to add better interactive control for the parameters in the
Still some bugs in teselating algebraic surfaces and the boundaries are
still not correct.
The communication protocol is still not standardised, some are using
CGI type encoding, others are using an XML format which all programs
are migrating to.
The server programs could all do with a clean up and actually get round
to freeing some memory!
No documentation apart from this for new programs.
The icuve program currently only produces integral curves, computing
vector fields and wavefronts yet to come.
A few more specifics on the changes
The mapping, intersect and icurve programs all perform some operation
on another geometry.
Furthermore each program can read part of the defining equation for the
function from another geometry. For example the it is posible to write
a generic project onto surface
mapping, which can take parameterised surface and any set of points in
parameter sace and project them onto the surface. i.e.
- The mapping program applies some mapping f: R^3 -> R^3 to the
- The intersect program will find the point of a geometry where
f(x,y,z) = 0 (or > 0 or < 0) for some real valued function f.
- The icurve program uses the points of the input geometry as base
points for calculating the integral curves for somevector field.
onto surface mapping + definition of surface = mapping to project
onto the surface
This feature makes it easy to implement many standard local
differential geometry functions:
Parabolic Lines, Ridge, Principal Directions, Focal
Surfaces, Symmetry Sets etc.
There have been two major improvments to the algebraic surface program:
As well as these a
bit more mathematics has been used to work out if a singularity should
lie in a box. Second derivatives are now examined in more detail. In
particular the determinant of the second derivative matrix is now
examined. The sign of this gives the diference between two lines
crossing on a face (x^2-y^2=0) or an isolated point on the face
(x^2+y^2=0) and similar fun in 3D. This has helped reduce the number of
false positive singurlarity points found.
- The routine to produce the polygons once all the points on the
surface have been found has been completely changed. It now calculates
facets for the surface at the bottom (smallest size = fine) level of
recursion, these facets are then joined together higher up the
recursion tree to produced the polygons used in the final surface (ie.
at corse resolution). This is the technically correct way to do it
rather than the add-hoc algorithms used previously. Thankfully this did
not entail the expected increase in compilation time.
routines are now used to find the singular points, and the turning
points. This means that far more acurate positions of singular points
are found. (Warning still not converging to normal turning points, so
surfaces are a little thiner than they should be).
The upshot of all these improvments is that singularities are much
sharper as the picture of Sarti's octic with 144 double points shows.
Long term stuff to do.
Copyright Richard Morris 2003
This work is licensed under a
Creative Commons License.|
(You can copy, distribute and display this works but: Attribution is required, its for Non-Commercial purposes, and it's Share Alike (GNUish/copyleft) i.e. has an identical license.)
It would also be nice if you let me know (firstname.lastname@example.org) if
you link to, redistribute, make a derived work or do anything groovy with this information.
Web page, applet and Algebraic Surface program by Richard Morris