JavaView® v2.00.008

vgp.surface.common
Class PgSurfaceDescr

java.lang.Object
  |
  +--jv.object.PsObject
        |
        +--jvx.surface.PgDomainDescr
              |
              +--vgp.surface.common.PgSurfaceDescr
All Implemented Interfaces:
java.lang.Cloneable, PsUpdateIf, java.io.Serializable
Direct Known Subclasses:
PgSurface_Boy, PgSurface_Catalan, PgSurface_CatenoidHelicoid, PgSurface_Cliffordtorus, PgSurface_ConicType, PgSurface_Cylinder, PgSurface_DupinCycloid, PgSurface_Ellipsoid, PgSurface_EllipticParaboloid, PgSurface_Enneper, PgSurface_FootballBarrel, PgSurface_Fresnel1, PgSurface_Fresnel2, PgSurface_Henneberg, PgSurface_Hopftorus, PgSurface_HyperbolicHelicoid, PgSurface_HyperbolicParaboloid, PgSurface_HyperboloidType, PgSurface_KleinBottle, PgSurface_Kuen, PgSurface_LowerHyperboloid, PgSurface_MoebiusStrip, PgSurface_OuterHyperboloid, PgSurface_PseudoSphere, PgSurface_Sphere, PgSurface_SphereWithParams, PgSurface_StereographicSphere, PgSurface_Torus, PgSurface_UpperHyperboloid

public abstract class PgSurfaceDescr
extends PgDomainDescr

Describes a parametrized function including higher derivatives and fundamental forms. Subclasses should override methods with prefix calc_. If derivatives are not overridden, this superclass approximates derivatives using finite differences. External classes must call the public methods, and not the calc_ methods, since the public classes are optimized using buffers with previously computed values.

A function object should be create somewhere else and set via setFunction(). For example, a subclass may do the task. If there exists a function object, and a user has modified this function object in the info panel, then the descriptor no longer uses the smooth derivatives but approximates derivatives using the finite difference methods.

Version:
28.10.99, 2.30 revised (sk) Adapted for scene handling 27.08.99, 2.20 revised (kp) Name PgDomain changed to PgDomainDescr.
11.07.99, 2.10 revised (sk) New functions added.
09.07.99, 2.02 revised (kp) Flag for expression evaluation is now correctly modified.
04.07.99, 2.01 revised (kp) Eval() instead of fun() for function evaluation.
00.00.99, 2.00 revised (ep, sk) All fundamental form calculations added.
00.00.98, 1.00 created (kp) First skeleton
Author:
Eike Preuss, Samy Khadem, Konrad Polthier
See Also:
eval(PdVector, double, double), Serialized Form

Field Summary
protected  boolean m_bUseFunctionExpression
          Flag whether user has modified function object, so that smooth derivatives are no longer usable.
protected  vgp.surface.common.PdMatrVecUVBuff m_christoffel
           
protected  vgp.surface.common.PdVectorUVBuff m_ddf_dUdU
           
protected  vgp.surface.common.PdVectorUVBuff m_ddf_dUdV
           
protected  vgp.surface.common.PdVectorUVBuff m_ddf_dVdV
           
protected  vgp.surface.common.PdMatrixUVBuff m_df
           
protected  vgp.surface.common.PdVectorUVBuff m_df_dU
          Different other buffers to reduce recomputations.
protected  vgp.surface.common.PdVectorUVBuff m_df_dV
           
protected  vgp.surface.common.PdMatrixUVBuff m_dN
           
protected  vgp.surface.common.PdVectorUVBuff m_dN_dU
           
protected  vgp.surface.common.PdVectorUVBuff m_dN_dV
           
protected  vgp.surface.common.PdVectorUVBuff m_f
          Buffer for function value.
protected  vgp.surface.common.PdMatrixUVBuff m_firstFundamental
           
protected  PuFunction m_function
          Function object consisting of functions as strings.
protected  vgp.surface.common.PdVectorUVBuff m_normal
           
protected  int m_numFunctions
          Dimension of image space.
protected  int m_numVariables
          Dimension of domain space.
protected  java.util.Vector m_parm
          Function parameters stored in vector as PuDouble and PuInteger objects.
protected  vgp.surface.common.PdMatrixUVBuff m_secondFundamental
           
protected  vgp.surface.common.PdMatrixUVBuff m_weingarten
           
protected static java.lang.String[] SCENES
           
protected static java.lang.String[] SURFACES
           
 
Fields inherited from class jvx.surface.PgDomainDescr
m_bMaxSizeEnabled, m_bShowULine, m_bShowVLine, m_dimOfVertices, m_numULines, m_numVLines, m_stripSize, m_uMax, m_uMin, m_vMax, m_vMin
 
Fields inherited from class jv.object.PsObject
HAS_CONFIG_PANEL, HAS_INFO_PANEL, HAS_MATERIAL_PANEL, INSPECTOR_INFO, INSPECTOR_INFO_EXT, IS_DELETED, IS_FIXED, IS_SELECTED, IS_USED, m_infoPanel, m_name, m_panelList, m_parent, m_tag, m_updateList, NUM_TAGS
 
Constructor Summary
PgSurfaceDescr()
           
 
Method Summary
 void addParameter(PsObject parm)
          Store function parameters in vector as PuDouble and PuInteger objects.
protected  PdMatrix[] calc_christoffel(double u, double v)
           
protected  PdVector calc_ddf_dUdU(double u, double v)
           
protected  PdVector calc_ddf_dUdV(double u, double v)
           
protected  PdVector calc_ddf_dVdV(double u, double v)
           
protected  PdVector calc_df_dU(double u, double v)
          These default functions compute the differential by difference quotients and should be overridden when explicit derivatives are known.
protected  PdVector calc_df_dV(double u, double v)
           
protected  PdMatrix calc_df(double u, double v)
           
protected  PdVector calc_dN_dU(double u, double v)
           
protected  PdVector calc_dN_dV(double u, double v)
           
protected  PdMatrix calc_dN(double u, double v)
           
 boolean calc_f(PdVector f, double u, double v)
          Internal function called by eval(..) to compute function value.
protected  PdMatrix calc_firstFundamental(double u, double v)
           
protected  PdVector calc_normal(double u, double v)
           
protected  PdMatrix calc_secondFundamental(double u, double v)
           
protected  PdMatrix calc_weingarten(double u, double v)
           
 PdMatrix[] christoffel(double u, double v)
           
 PdVector ddf_dUdU(double u, double v)
           
 PdVector ddf_dUdV(double u, double v)
           
 PdVector ddf_dVdV(double u, double v)
           
 PdVector df_dU(double u, double v)
          buffered versions, used by all other classes, should not be overwritten
 PdVector df_dV(double u, double v)
           
 PdMatrix df(double u, double v)
           
 PdVector dN_dU(double u, double v)
           
 PdVector dN_dV(double u, double v)
           
 PdMatrix dN(double u, double v)
           
 PdVector eval(PdVector f, double u, double v)
          Buffered version of calc_f, should not be overridden.
 PdMatrix firstFundamental(double u, double v)
           
 PsPanel getDomainPanel()
          Create the info panel of superclass PgDomainDescr which has less gui components.
 PuFunction getFunction()
          Get function object, e.g. to modify function strings.
static java.lang.String[] getListOfScenes()
          Get list of existing scenes.
static java.lang.String[] getListOfSurfaces()
          Get list of existing surface descriptors.
 PsObject getParameter(java.lang.String parmLabel)
          Return stored function parameters as PuDouble or PuInteger objects.
 java.util.Enumeration getParameters()
          Return stored function parameters as PuDouble or PuInteger objects.
 void init()
          Initialize and reset data structure and all instance variables.
 boolean isUPeriodic()
           
 boolean isVPeriodic()
           
 PdVector normal(double u, double v)
           
 PdMatrix secondFundamental(double u, double v)
           
 boolean setFunction(PuFunction fun)
          Set function object, which has been setup somewhere else.
 boolean update(java.lang.Object event)
          Catch events from function strings.
 boolean useFunctionExpression()
          Check whether function string has been modified by user.
 void useFunctionExpression(boolean flag)
          Set flag whether function string has been modified by user.
 PdMatrix weingarten(double u, double v)
           
 
Methods inherited from class jvx.surface.PgDomainDescr
eval, getNumULines, getNumVLines, getUMax, getUMin, getVMax, getVMin, isShowingULine, isShowingVLine, setDiscr, setDiscrBounds, setMaxSize, setNumULines, setNumVLines, setSize, setUMax, setUMin, setVMax, setVMin, showULine, showVLine
 
Methods inherited from class jv.object.PsObject
addInspector, addUpdateListener, clearTag, clone, clone, clone, copy, getFather, getInfoPanel, getInspector, getName, getNumObjects, hasInspector, hasTag, hasUpdateListener, instanceOf, instanceOf, removeInspector, removeUpdateListener, setName, setParent, setTag, toString, updatePanels
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SURFACES

protected static java.lang.String[] SURFACES

SCENES

protected static java.lang.String[] SCENES

m_parm

protected java.util.Vector m_parm
Function parameters stored in vector as PuDouble and PuInteger objects. Use getParameter(String) to return parameter objects.
See Also:
getParameter(String)

m_numVariables

protected int m_numVariables
Dimension of domain space.

m_numFunctions

protected int m_numFunctions
Dimension of image space.

m_function

protected PuFunction m_function
Function object consisting of functions as strings.

m_bUseFunctionExpression

protected boolean m_bUseFunctionExpression
Flag whether user has modified function object, so that smooth derivatives are no longer usable. If this flag is true finite difference methods will be used to compute all derivatives.

Flag is set false if user has not overridden the eval() function method.

m_f

protected vgp.surface.common.PdVectorUVBuff m_f
Buffer for function value.

m_df_dU

protected vgp.surface.common.PdVectorUVBuff m_df_dU
Different other buffers to reduce recomputations.

m_df_dV

protected vgp.surface.common.PdVectorUVBuff m_df_dV

m_df

protected vgp.surface.common.PdMatrixUVBuff m_df

m_ddf_dUdU

protected vgp.surface.common.PdVectorUVBuff m_ddf_dUdU

m_ddf_dUdV

protected vgp.surface.common.PdVectorUVBuff m_ddf_dUdV

m_ddf_dVdV

protected vgp.surface.common.PdVectorUVBuff m_ddf_dVdV

m_firstFundamental

protected vgp.surface.common.PdMatrixUVBuff m_firstFundamental

m_secondFundamental

protected vgp.surface.common.PdMatrixUVBuff m_secondFundamental

m_weingarten

protected vgp.surface.common.PdMatrixUVBuff m_weingarten

m_christoffel

protected vgp.surface.common.PdMatrVecUVBuff m_christoffel

m_normal

protected vgp.surface.common.PdVectorUVBuff m_normal

m_dN_dU

protected vgp.surface.common.PdVectorUVBuff m_dN_dU

m_dN_dV

protected vgp.surface.common.PdVectorUVBuff m_dN_dV

m_dN

protected vgp.surface.common.PdMatrixUVBuff m_dN
Constructor Detail

PgSurfaceDescr

public PgSurfaceDescr()
Method Detail

init

public void init()
Description copied from class: PgDomainDescr
Initialize and reset data structure and all instance variables.
Overrides:
init in class PgDomainDescr

getListOfSurfaces

public static java.lang.String[] getListOfSurfaces()
Get list of existing surface descriptors.

getListOfScenes

public static java.lang.String[] getListOfScenes()
Get list of existing scenes.

getFunction

public PuFunction getFunction()
Get function object, e.g. to modify function strings.

setFunction

public boolean setFunction(PuFunction fun)
Set function object, which has been setup somewhere else.

useFunctionExpression

public boolean useFunctionExpression()
Check whether function string has been modified by user.

useFunctionExpression

public void useFunctionExpression(boolean flag)
Set flag whether function string has been modified by user.

getDomainPanel

public PsPanel getDomainPanel()
Create the info panel of superclass PgDomainDescr which has less gui components.

isUPeriodic

public boolean isUPeriodic()

isVPeriodic

public boolean isVPeriodic()

update

public boolean update(java.lang.Object event)
Catch events from function strings. Update the class whenever a child has changed. Method is usually invoked from the children.
Overrides:
update in class PgDomainDescr
Following copied from class: jv.object.PsObject
See Also:
PsObject.setParent(PsUpdateIf), PsObject.getFather(), PsObject.addUpdateListener(PsUpdateIf)

addParameter

public void addParameter(PsObject parm)
Store function parameters in vector as PuDouble and PuInteger objects. Use getParameter(String) to return parameter objects.
See Also:
getParameter(String)

getParameter

public PsObject getParameter(java.lang.String parmLabel)
Return stored function parameters as PuDouble or PuInteger objects. Use addParameter(PsObject) to store function parameter.
See Also:
addParameter(PsObject)

getParameters

public java.util.Enumeration getParameters()
Return stored function parameters as PuDouble or PuInteger objects. Use addParameter(PsObject) to store function parameter.
See Also:
addParameter(PsObject)

calc_f

public boolean calc_f(PdVector f,
                      double u,
                      double v)
Internal function called by eval(..) to compute function value. It is ensured by the calling eval() function that argument vector exists and has correct size. If function set flag m_bUseFunctionExpression==false then we use this indicator that function has not been overridden and use the string functions.

This function should be overwritten by subclasses to compute surfaces.

HACK: Access lowered to public since other javadoc comments refer to class.

Parameters:
f - vector where to place the function values.
Returns:
true if function has been overridden and evaluated successfully.
See Also:
eval(PdVector, double, double)

calc_df_dU

protected PdVector calc_df_dU(double u,
                              double v)
These default functions compute the differential by difference quotients and should be overridden when explicit derivatives are known.

calc_df_dV

protected PdVector calc_df_dV(double u,
                              double v)

calc_df

protected PdMatrix calc_df(double u,
                           double v)

calc_ddf_dUdU

protected PdVector calc_ddf_dUdU(double u,
                                 double v)

calc_ddf_dUdV

protected PdVector calc_ddf_dUdV(double u,
                                 double v)

calc_ddf_dVdV

protected PdVector calc_ddf_dVdV(double u,
                                 double v)

calc_firstFundamental

protected PdMatrix calc_firstFundamental(double u,
                                         double v)

calc_christoffel

protected PdMatrix[] calc_christoffel(double u,
                                      double v)

calc_normal

protected PdVector calc_normal(double u,
                               double v)

calc_dN_dU

protected PdVector calc_dN_dU(double u,
                              double v)

calc_dN_dV

protected PdVector calc_dN_dV(double u,
                              double v)

calc_dN

protected PdMatrix calc_dN(double u,
                           double v)

calc_secondFundamental

protected PdMatrix calc_secondFundamental(double u,
                                          double v)

calc_weingarten

protected PdMatrix calc_weingarten(double u,
                                   double v)

eval

public PdVector eval(PdVector f,
                     double u,
                     double v)
Buffered version of calc_f, should not be overridden.

df_dU

public PdVector df_dU(double u,
                      double v)
buffered versions, used by all other classes, should not be overwritten

df_dV

public PdVector df_dV(double u,
                      double v)

df

public PdMatrix df(double u,
                   double v)

ddf_dUdU

public PdVector ddf_dUdU(double u,
                         double v)

ddf_dUdV

public PdVector ddf_dUdV(double u,
                         double v)

ddf_dVdV

public PdVector ddf_dVdV(double u,
                         double v)

normal

public PdVector normal(double u,
                       double v)

dN_dU

public PdVector dN_dU(double u,
                      double v)

dN_dV

public PdVector dN_dV(double u,
                      double v)

dN

public PdMatrix dN(double u,
                   double v)

firstFundamental

public PdMatrix firstFundamental(double u,
                                 double v)

secondFundamental

public PdMatrix secondFundamental(double u,
                                  double v)

weingarten

public PdMatrix weingarten(double u,
                           double v)

christoffel

public PdMatrix[] christoffel(double u,
                              double v)

JavaView® v2.00.008

The software JavaView® is copyright protected. All Rights Reserved.