vmm.surface.parametric
Class ChenGackstatter

java.lang.Object
  extended by vmm.core.Exhibit
      extended by vmm.core3D.Exhibit3D
          extended by vmm.surface.Surface
              extended by vmm.surface.parametric.SurfaceParametric
                  extended by vmm.surface.parametric.WeierstrassMinimalSurface
                      extended by vmm.surface.parametric.ChenGackstatter
All Implemented Interfaces:
java.util.EventListener, javax.swing.event.ChangeListener, Decorateable, Parameterizable

public class ChenGackstatter
extends WeierstrassMinimalSurface

The Chen-Gackstatter surface posed surprising numerical difficulties, which increased with exponent. 1.) One cannot integrate the Weierstrass Data close enough into the three saddles to close gaping holes, starting at exponent = 5. 2.) For putting the pieces together one has to find the intersection of the symmetry planes. Only after experimentation did I find points on these symmetry lines that allowed to compute the intersection with sufficient accuracy. This then worked also in the Lopez-Ros morph. 3.) Finally, the period-closing Lopez-Ros value had to be found. One only has to solve a linear equation with coefficients depending on the minimal surface. For reasons that I could not find this worked only for symmetry parameters 2,3,4,5 and then developed visible inaccuracies. These went away after repeating the determination of the Lopez-Ros parameter three times. This indicates that the linear equation has inaccurately defined coefficients, but I do not see a reason for that. 4.) For esthetic reasons the big holes had to be closed. For the top and bottom symmetry points this worked satisfactorily. The middle symmetry point still has gaps for exponent > 5. H. Karcher


Nested Class Summary
 
Nested classes/interfaces inherited from class vmm.surface.parametric.WeierstrassMinimalSurface
WeierstrassMinimalSurface.WMSView
 
Field Summary
protected  int Ex
           
protected  int iP
           
protected  double LRP
           
protected  double r1
           
protected  int um
           
protected  int vm
           
 
Fields inherited from class vmm.surface.parametric.WeierstrassMinimalSurface
afp, AFP, canShowConjugateSurface, del, distFrom0, du, dv, flag0, flag05, halfPeriod, helperArray, I__C, I_C, I1_C, I2_C, I3_C, I4_C, iBeginMiddleInHelper, iFirstInHelper, inAssociateMorph, IP__C, IP_C, LRPclosed, multipleCopyOptions, needsPeriodClosed, needsValueArray, ONE__C, ONE_C, ucount, vcount, wantsToSeeDomain, wantsToSeeGaussImage, ZERO_C
 
Fields inherited from class vmm.surface.parametric.SurfaceParametric
COLOR_GAUSS_CURVATURE, COLOR_MEAN_CURVATURE, COLOR_TWO_SIDED_DEFAULT, COLOR_TWO_SIDED_USER, COLOR_USER, COLOR_USER_FUNCTION_HSB, COLOR_USER_FUNCTION_RGB, COLOR_WHITE, umax, umin, vmax, vmin
 
Fields inherited from class vmm.surface.Surface
data, uPatchCount, vPatchCount
 
Fields inherited from class vmm.core3D.Exhibit3D
defaultViewpoint, defaultViewUp, previousTransform3D
 
Fields inherited from class vmm.core.Exhibit
decorations, exhibitNeedsRedraw, isMorphing, morphingView, parameters, previousTransform
 
Constructor Summary
ChenGackstatter()
           
 
Method Summary
protected  double closingLopezRos()
           
protected  void createData()
          Overrides createData from SurfaceParametric with the goal of recomputing all constants that go into the Weierstrass Data, and then do the helperArray.
protected  void doClosingJob()
          Dummy function.
protected  Complex domainGrid(double u, double v)
          Override the default Cartesian Grid.
protected  Complex gauss(Complex z)
          The following two functions are the Weierstrass data that define this surface.
protected  ComplexVector3D getCenter()
          We want to center the surface already at the helper Level.
 View getDefaultView()
          Returns a default view of this exhibit, a View of type SurfaceView.
protected  Complex hPrime(Complex z)
           
protected static double myRad(double u, int e)
          Strictly monotone function with critical points of order e at (-1,0) and (0,1).
protected  void p_Index()
          Last index of grid point before symmetry line switches to straight line.
 void parameterChanged(Parameter param, java.lang.Object oldValue, java.lang.Object newValue)
          This method will be called automatically when a parameter that has been added to this Exhibit is changed.
protected  void redoConstants()
          redoConstants is called in createData above, before any other computations start.
 Vector3D surfacePoint(double u, double v)
          Override surfacePoint to close the hole around the center saddle.
 
Methods inherited from class vmm.surface.parametric.WeierstrassMinimalSurface
ComplexVectorFunction, ComplexVectorIntegrator, ComplexVectorOneStepIntegrator, component3, computeHalfPeriod, createHelperArray, gaussInverseTimesHPrime, gaussTimesHPrime, getAdditionalAnimationsForView, getNumberOfPieces, helperToMinimal, intersectLines, minimalToHelper, monotonPow, setNumberOfPieces, surfaceNormal
 
Methods inherited from class vmm.surface.parametric.SurfaceParametric
addExtraXML, deriv_u, deriv_v, gaussMap, getActionsForView, readExtraXML, removeView
 
Methods inherited from class vmm.surface.Surface
computeDrawData3D, doDraw3D, getBuildAnimation, getDefaultOrientation, setDefaultOrientation
 
Methods inherited from class vmm.core3D.Exhibit3D
computeDrawDataHook, doDrawHook, getDefaultTransform, getDefaultViewpoint, getDefaultViewUp, setDefaultViewpoint, setDefaultViewUp
 
Methods inherited from class vmm.core.Exhibit
addChangeListener, addDecoration, addParameter, addView, clearDecorations, computeDrawData, doDraw, fireExhibitChangeEvent, forceRedraw, getAlternativeViews, getCreateAnimation, getDecorations, getDefaultBackground, getDefaultForeground, getDefaultWindow, getFramesForMorphing, getMorphingAnimation, getName, getParameterByName, getParameters, getSettingsCommandsForView, getTitle, getUseFilmstripForMorphing, getViews, removeChangeListener, removeDecoration, removeParameter, render, setDefaultBackground, setDefaultForeground, setDefaultWindow, setDefaultWindow, setFramesForMorphing, setName, setUseFilmstripForMorphing, stateChanged
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

Ex

protected int Ex

iP

protected int iP

um

protected int um

vm

protected int vm

r1

protected double r1

LRP

protected double LRP
Constructor Detail

ChenGackstatter

public ChenGackstatter()
Method Detail

getDefaultView

public View getDefaultView()
Description copied from class: Surface
Returns a default view of this exhibit, a View of type SurfaceView. (Note: If a Surface is displayed in a plain View3D, it will always appear as a wireframe.)

Overrides:
getDefaultView in class WeierstrassMinimalSurface

parameterChanged

public void parameterChanged(Parameter param,
                             java.lang.Object oldValue,
                             java.lang.Object newValue)
Description copied from class: Exhibit
This method will be called automatically when a parameter that has been added to this Exhibit is changed. It should not ordinarily be called directly. Note that in fact, this method simply calls forceRedraw. This method is defined in the <@link Parameterizable} interface.

Specified by:
parameterChanged in interface Parameterizable
Overrides:
parameterChanged in class WeierstrassMinimalSurface
Parameters:
param - The Parmeter whose value has been set.
oldValue - The previous value of the parameter.
newValue - The new, current value of the parameter. This is not necessarily guaranteed to be different from the old value (although it is for parameters definedin the VMM core).
See Also:
Exhibit.forceRedraw()

createData

protected void createData()
Description copied from class: WeierstrassMinimalSurface
Overrides createData from SurfaceParametric with the goal of recomputing all constants that go into the Weierstrass Data, and then do the helperArray. The recomputation should be done before super.createData() is called.

Overrides:
createData in class WeierstrassMinimalSurface

domainGrid

protected Complex domainGrid(double u,
                             double v)
Override the default Cartesian Grid. It is critical that the domain grid is adapted to the minimal surface.

Overrides:
domainGrid in class WeierstrassMinimalSurface

p_Index

protected void p_Index()
Last index of grid point before symmetry line switches to straight line.


myRad

protected static double myRad(double u,
                              int e)
Strictly monotone function with critical points of order e at (-1,0) and (0,1). Used to adjust the parameter lines in domainGrid.


gauss

protected Complex gauss(Complex z)
The following two functions are the Weierstrass data that define this surface. It is best shown on the above domainGrid.

Specified by:
gauss in class WeierstrassMinimalSurface

hPrime

protected Complex hPrime(Complex z)
Specified by:
hPrime in class WeierstrassMinimalSurface

closingLopezRos

protected double closingLopezRos()

doClosingJob

protected void doClosingJob()
Description copied from class: WeierstrassMinimalSurface
Dummy function. Needs to be specified if (needsPeriodClosing) is ever TRUE

Overrides:
doClosingJob in class WeierstrassMinimalSurface

redoConstants

protected void redoConstants()
Description copied from class: WeierstrassMinimalSurface
redoConstants is called in createData above, before any other computations start.

Overrides:
redoConstants in class WeierstrassMinimalSurface

getCenter

protected ComplexVector3D getCenter()
We want to center the surface already at the helper Level. We cannot use the symmetry lines of the surface and therefore need to integrate towards the image of P.

Overrides:
getCenter in class WeierstrassMinimalSurface

surfacePoint

public Vector3D surfacePoint(double u,
                             double v)
Override surfacePoint to close the hole around the center saddle.

Overrides:
surfacePoint in class WeierstrassMinimalSurface