A mathematical curve and surface visualiser for singular surface and objects from Singularity Theory
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
defs
src/org/singsurf/singsurf
.gitignore
LICENSE
README.md

README.md

SingSurf

A mathematical curve and surface visualiser for singular surface and objects from Singularity Theory.

The program can calculate many of the objects found in Singularity theory:

  • Algebraic curves defined by a single polynomial equation in two variables. e.g. a circle

          x^2 + y^2 - r^2;
    
  • Algebraic surfaces defined by a single polynomial equation in three variables. e.g. a cone

          x^2 + y^2 - z^2;
    
  • Paramertised 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 an equation. Can be used to calculate non-polynomial curves.

  • 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];   	   
    
  • Intersections where the equation depends on the definition of another curve or surface. e.g. The profile of a surface

      	N . [A,B,C];
      	N = diff(S,x) ^^ diff(S,y);	
    
  • Mappings where the equation depends on another surface. For example projection of a curve onto a surface.

  • Intersections where the equations depends on a pair of curves. For example the pre-symmetry set of a curve.

  • Mapping where the equation depends on a pair of curves. For example the Symmetry set.

Requirements

The program requires

  • Java any recent version
  • JavaView mathematical visualization software from javaview.de Alas not open-source
  • JEP 2.4.1 Java Expression Parser, a mathematical parser evaluator from jep-java-gpl or my own fork jep-java-gpl which may contain some customisation of the package to fit the needs of the SingSurf program.

It is a good idea to register your version of JavaView. Regestration provides a licence file jv-lic.lic which should be copied to the rsrc directory, this prevents a notification message appearing.

Installation and running

A zip file with an executable jar file and all necessary files is availiable from singsurf.org. Once unpacked this can be run using a single line java command.

For the git source code, there are three different main classes

  • org.singsurf.singsurf.SingSurfPro the 3D version with all sub-types
  • org.singsurf.singsurf.SingSurf2D the 2D version optimised for curves in the plane
  • org.singsurf.singsurf.ASurfSimp a simplified version just with the algebraic surface component