de.jreality.tutorial.projects.ksurfaces
Class KSurfaces

java.lang.Object
  extended by de.jreality.tutorial.projects.ksurfaces.KSurfaces

public class KSurfaces
extends java.lang.Object

The algorithms to generate the Gauss map of a K-surface and the surface. The arrays are in xt--coordinates, where the first index is time t and the second is the position x.

Author:
Ulrich Pinkall, adapted for the tutorial by G. Paul Peters, 24.07.2009
See Also:
Pinkall: "Designing Cylinders with Constant Negative Curvature", in Discrete Differential Geometry, pages 57-66. Springer 2008.

Constructor Summary
KSurfaces()
           
 
Method Summary
static void gaussMapFromInitialAnnulus(double[][][] initialAnnulus, double[][][] target)
          Computes the Gauss map of a K-surface from initial Cauchy data, i.e., two closed curves.
static void kSurfaceFromGaussMap(double[][][] gaussMap, double[][][] target)
          Calculates the K-surface from the given Gauss map, assuming that the Gauss map consists of spherical parallelograms as described in gaussMapFromInitialAnnulus(double[][][], double[][][]).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

KSurfaces

public KSurfaces()
Method Detail

gaussMapFromInitialAnnulus

public static void gaussMapFromInitialAnnulus(double[][][] initialAnnulus,
                                              double[][][] target)
Computes the Gauss map of a K-surface from initial Cauchy data, i.e., two closed curves. Assums that the points of the initial data lie on the 2-sphere this method generates more points so that the quadrilaterals (i-1,j-1), (i-1,j), (i,j),(i-2,j-1) form spherical parallelograms.

Parameters:
initialAnnulus - the initial data, i.e., a double array double[2][n][3] containing 2 polygons with n vertices, which are both interpreted as closed curves connecting that last and the first one.
target - a double array that will be filled with the result, i.e., an array double[m][n][3], where m>1 is the number of time steps to be calculated.

kSurfaceFromGaussMap

public static void kSurfaceFromGaussMap(double[][][] gaussMap,
                                        double[][][] target)
Calculates the K-surface from the given Gauss map, assuming that the Gauss map consists of spherical parallelograms as described in gaussMapFromInitialAnnulus(double[][][], double[][][]).

Parameters:
gaussMap - the given Gauss map.
target - a double array with enough space to hold the resulting surface. A quad mesh where the quadrilaterals consist of (i-1,j-1), (i-1,j), (i,j),(i-2,j-1).