vgp.surface.common

## Class PgSurfaceDescr

- java.lang.Object
- - jv.object.PsObject
  - - jvx.surface.PgDomainDescr
    - - vgp.surface.common.PgSurfaceDescr

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, PsUpdateIf
  Direct Known Subclasses:
    PgSurface_Boy, PgSurface_Breather, PgSurface_BreatherPQ, PgSurface_Catalan, PgSurface_CatenoidHelicoid, PgSurface_Cliffordtorus, PgSurface_Cone, 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_KleinBottleUgly, PgSurface_Kuen, PgSurface_LawsonHelicoid, PgSurface_LowerHyperboloid, PgSurface_MoebiusStrip, PgSurface_OuterHyperboloid, PgSurface_PseudoSphere, PgSurface_Sievert, PgSurface_Sphere, PgSurface_SphereWithParams, PgSurface_StereographicSphere, PgSurface_Tannery, PgSurface_Torus, PgSurface_UpperHyperboloid, PgSurface_Zoll

      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.

  See Also:
    `eval(PdVector, double, double)`, Serialized Form

- - ### Field Summary

    - ### Fields inherited from class jv.object.PsObject

      `HAS_BOUNDARY_PANEL, HAS_CONFIG_PANEL, HAS_INFO_PANEL, HAS_LABEL_PANEL, HAS_MATERIAL_PANEL, HAS_TEXTURE_PANEL, HAS_VECTOR_PANEL, INSPECTOR_INFO, INSPECTOR_INFO_EXT, IS_DELETED, IS_FIXED, IS_FOCUSSED, IS_PICKED, IS_SELECTED, IS_USED, NUM_TAGS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PgSurfaceDescr()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addParameter(PsObject parm)` Store function parameters in vector as PuDouble and PuInteger objects.
    `boolean` | `calc_f(PdVector f, double u, double v)` Internal function called by eval(..) to compute function value.
    `PdMatrix[]` | `christoffel(double u, double v)`
    `java.lang.Object` | `clone()` Duplicate geometry by recursively cloning all instance variables except inspector panels and lists of registered listeners.
    `void` | `copy(PsObject object)` Copy instance variables by duplication, not by copying a reference.
    `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)`
    `int` | `getAmbientProjection()` Get projection mode of ambient space used in model transformations.
    `int` | `getAmbientSpace()` Get ambient space used in model transformations.
    `int` | `getDimOfSurface()` Get dimension of ambient space in which surface is immersed.
    `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()` Determine if surface is periodic in u-direction.
    `boolean` | `isVPeriodic()` Determine if surface is periodic in v-direction.
    `PdVector` | `normal(double u, double v)`
    `PdMatrix` | `secondFundamental(double u, double v)`
    `void` | `setAmbientProjection(int mode)` Set projection mode of ambient space used in model transformations.
    `void` | `setAmbientSpace(int mode)` Set ambient space used in model transformations.
    `void` | `setDimOfSurface(int dim)` Set dimension of ambient space in which surface is immersed.
    `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, getNameOfLines, getNumULines, getNumVLines, getUMax, getUMin, getVMax, getVMin, isShowingULine, isShowingVLine, setDiscr, setDiscrBounds, setMaxSize, setNameOfLines, setNumULines, setNumVLines, setSize, setUMax, setUMin, setVMax, setVMin, showULine, showVLine, toString`

    - ### Methods inherited from class jv.object.PsObject

      `addInspector, addUpdateListener, assureInspector, clearTag, clone, clone, getFather, getInfoPanel, getInspector, getName, getNumObjects, getSymbol, hasInspector, hasTag, hasUpdateListener, instanceOf, instanceOf, newInspector, newInspector, removeInspector, removeInspector, removeUpdateListener, setName, setParent, setSymbol, setTag, updatePanels`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### 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`

    - #### clone

          public java.lang.Object clone()

      Duplicate geometry by recursively cloning all instance variables except inspector panels and lists of registered listeners. The parent relationship is maintained only within this class but not to external classes. In general, all links of the clone to external objects are set to `null`.
      Overrides:
        `clone` in class `PgDomainDescr`
      Since:
        JavaView 2.89.000
      See Also:
        `copy(PsObject)`

    - #### copy

          public void copy(PsObject object)

      Copy instance variables by duplication, not by copying a reference.

      The argument was changed from PgGeometry to PsObject since there were problems in J/Link which preferred to use jv.object.PsObject#copy(PsObject) instead of jv.project.PgGeometry#copy(PsObject).

      Overrides:
        `copy` in class `PgDomainDescr`
      Since:
        JavaView 2.89.000
      See Also:
        `clone()`

    - #### getAmbientSpace

          public int getAmbientSpace()

      Get ambient space used in model transformations.

    - #### setAmbientSpace

          public void setAmbientSpace(int mode)

      Set ambient space used in model transformations.

    - #### getAmbientProjection

          public int getAmbientProjection()

      Get projection mode of ambient space used in model transformations.

    - #### setAmbientProjection

          public void setAmbientProjection(int mode)

      Set projection mode of ambient space used in model transformations.

    - #### getDimOfSurface

          public int getDimOfSurface()

      Get dimension of ambient space in which surface is immersed.

    - #### setDimOfSurface

          public void setDimOfSurface(int dim)

      Set dimension of ambient space in which surface is immersed.

      If function expressions exist, then the number of function expressions must be equal to the surface dimension. Otherwise, the number of expressions is adjusted in this method.

    - #### 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. The number of functions must not be modified after this assignment. Each function must have variables 'u' and 'v'.

    - #### 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.

    - #### isUPeriodic

          public boolean isUPeriodic()

      Determine if surface is periodic in u-direction. This method returns false, but will be overwritten by surface which are periodic.

    - #### isVPeriodic

          public boolean isVPeriodic()

      Determine if surface is periodic in v-direction. This method returns false, but will be overwritten by surface which are periodic.

    - #### 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.
      Specified by:
        `update` in interface `PsUpdateIf`
      Overrides:
        `update` in class `PgDomainDescr`
      Parameters:
        `event` - carries a lot of information
      Returns:
        true if event has been handled, otherwise false
      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 must be overwritten by subclasses to compute surfaces, for example, if a subclass wants to perform the function calculation itself.

      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)`

    - #### eval

          public PdVector eval(PdVector f,
                      double u,
                      double v)

      Buffered version of calc_f, should not be overridden. Size of argument vector f will be modified if vector is too small.

    - #### df_dU

          public final PdVector df_dU(double u,
                       double v)

      Buffered versions, used by all other classes, should not be overwritten.

    - #### df_dV

          public final PdVector df_dV(double u,
                       double v)

    - #### df

          public final PdMatrix df(double u,
                    double v)

    - #### ddf_dUdU

          public final PdVector ddf_dUdU(double u,
                          double v)

    - #### ddf_dUdV

          public final PdVector ddf_dUdV(double u,
                          double v)

    - #### ddf_dVdV

          public final PdVector ddf_dVdV(double u,
                          double v)

    - #### normal

          public final PdVector normal(double u,
                        double v)

    - #### dN_dU

          public final PdVector dN_dU(double u,
                       double v)

    - #### dN_dV

          public final PdVector dN_dV(double u,
                       double v)

    - #### dN

          public final PdMatrix dN(double u,
                    double v)

    - #### firstFundamental

          public final PdMatrix firstFundamental(double u,
                                  double v)

    - #### secondFundamental

          public final PdMatrix secondFundamental(double u,
                                   double v)

    - #### weingarten

          public final PdMatrix weingarten(double u,
                            double v)

    - #### christoffel

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

"

The software JavaView? is copyright protected. All Rights Reserved.
"