vgp.curve.subdivision

## Class PjSubdivisionCurve

- java.lang.Object
- - jv.object.PsObject
  - - jv.project.PjProject
    - - vgp.curve.subdivision.PjSubdivisionCurve

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, PsTimeListenerIf, PsUpdateIf, PvPickListenerIf

      public class PjSubdivisionCurve
      extends PjProject

  Demonstrates ideas for a subdivision algorithm of curves on surfaces.
  See Also:
    Serialized Form
  Author:
    Eike Preuß, Konrad Polthier
  Version:
    15.04.06, 2.00 revised (kp) Full revision including sync with PjProject and new PgPolygonOnElementSet.
    13.01.04, 1.00 created (ep)

- - ### 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
    `PjSubdivisionCurve()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static PgPolygonOnElementSet` | `computeSubdivisionCurve(PgElementSet geom, PiVector refElem, PdBary[] refBary, int depth, PgPolygonOnElementSet outpoly, boolean reuseTriangleStrips)` Chaikin-Type subdivision.
    `boolean` | `getReuseTriangleRunsWhileIterating()`
    `void` | `init()` Initialize and reset project, stops the running animation if any.
    `void` | `removeGeometry()`
    `boolean` | `setGeometry(PgGeometryIf geom)` Interface method used by subclassed project to initialize the project geometry from outside the project, for example, during initialization or loading of the project.
    `void` | `setReuseTriangleRunsWhileIterating(boolean flag)`
    `void` | `start()` Method is invoked during loading of a project in JavaView.
    `boolean` | `update(java.lang.Object event)` Update all inspector panels, send update to all registered update listeners and finally update parent.

    - ### Methods inherited from class jv.project.PjProject

      `addDisplay, addGeometry, addGeometry, dispose, dragDisplay, dragInitial, dragVertex, fitDisplays, getAnimation, getDisplay, getDisplays, getGeometry, getGeometry, getNumGeometries, getParameter, getParameterInfo, getViewer, hasAnimation, hasDisplay, isEnabledAutoFit, markVertices, pickDisplay, pickInitial, pickVertex, removeDisplay, removeGeometries, removeGeometry, selectDisplay, selectGeometry, setAnimation, setBackColor, setBorderType, setDisplay, setEnabledAutoFit, setParameterInfo, setTime, setViewer, stop, unmarkVertices`

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

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

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

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

    - ### Methods inherited from interface jv.anim.PsTimeListenerIf

      `getName`

    - ### Methods inherited from interface jv.project.PvPickListenerIf

      `getName`

- - ### Constructor Detail

    - #### PjSubdivisionCurve

          public PjSubdivisionCurve()

  - ### Method Detail

    - #### init

          public void init()

      Description copied from class: `PjProject`
      Initialize and reset project, stops the running animation if any. Does not reset any registered display nor geometry. They must be reset individually in each subclass.
      Overrides:
        `init` in class `PjProject`

    - #### start

          public void start()

      Description copied from class: `PjProject`
      Method is invoked during loading of a project in JavaView.

      If a project has an animation object, then the animation panel is shown when the project's this start() method is invoked during loading of the project. Use `setAnimation(PsAnimation)` to register an animation.

      If auto fit is enabled then scenery is scaled to fit in each display.

      Overrides:
        `start` in class `PjProject`
      See Also:
        `PvViewerIf.start()`, `PjProject.isEnabledAutoFit()`

    - #### update

          public boolean update(java.lang.Object event)

      Description copied from class: `PsObject`
      Update all inspector panels, send update to all registered update listeners and finally update parent. Each of those updates has this object as event independent of the argument of this method.

      Central update method of this object. Must be overwritten if this class receives unknown events, say, from new children. Any subclass must class invoke super.update(event) on all events it does handle itself.

      Specified by:
        `update` in interface `PsUpdateIf`
      Overrides:
        `update` in class `PsObject`
      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)`

    - #### removeGeometry

          public void removeGeometry()

    - #### setGeometry

          public boolean setGeometry(PgGeometryIf geom)

      Description copied from class: `PjProject`
      Interface method used by subclassed project to initialize the project geometry from outside the project, for example, during initialization or loading of the project.

      This method of PjProject does nothing and must be overwritten in order to be useful. Not all projects support this method.

      Overrides:
        `setGeometry` in class `PjProject`
      Parameters:
        `geom` - needs to be triangulated

    - #### getReuseTriangleRunsWhileIterating

          public boolean getReuseTriangleRunsWhileIterating()

    - #### setReuseTriangleRunsWhileIterating

          public void setReuseTriangleRunsWhileIterating(boolean flag)

    - #### computeSubdivisionCurve

          public static PgPolygonOnElementSet computeSubdivisionCurve(PgElementSet geom,
                                                                      PiVector refElem,
                                                                      PdBary[] refBary,
                                                                      int depth,
                                                                      PgPolygonOnElementSet outpoly,
                                                                      boolean reuseTriangleStrips)

      Chaikin-Type subdivision.
      Parameters:
        `geom` - underlying triangulation, 2d surface in 3d
        `refElem` - vector of element indices for control points
        `refBary` - vector of barycentric coordinates for control points
        `depth` - num of subdivision steps
        `outpoly` - result, computed subdivision curve, may be null
        `reuseTriangleStrips` - use element strips from previous step for current step; should be true in normal case, false only for demonstration purpose
      Returns:
        subdivision curve

"

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