JavaView© v3.95.000

vgp.curve.subdivision
Class PjSubdivisionCurve

java.lang.Object
  extended byjv.object.PsObject
      extended byjv.project.PjProject
          extended byvgp.curve.subdivision.PjSubdivisionCurve
All Implemented Interfaces:
java.lang.Cloneable, PsTimeListenerIf, PsUpdateIf, PvPickListenerIf, java.io.Serializable

public class PjSubdivisionCurve
extends PjProject

Demonstrates ideas for a subdivision algorithm of curves on surfaces.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class jv.object.PsObject
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
PjSubdivisionCurve()
           
 
Method Summary
static PgPolygonOnElementSet computeSubdivisionCurve(PgElementSet geom, PiVector refElem, PdBary[] refBary, int depth, PgPolygonOnElementSet outpoly, PgPolygon outpolyGeom, boolean reuseTriangleStrips)
          Chaikin-Type subdivision.
 PgGeometryIf getGeometry()
          Get currently selected geometry of project.
 boolean getReuseTriangleRunsWhileIterating()
           
 PgGeometryIf getSelectedGeometry()
           
 void init()
          Initialize and reset project, stops the running animation if any.
 void removeGeometry()
           
 void setGeometry(PgGeometry geom)
           
 void setReuseTriangleRunsWhileIterating(boolean flag)
           
 void start()
          Method is invoked during loading of a project in JavaView.
 boolean update(java.lang.Object event)
          Event handling method in the update mechanism.
 
Methods inherited from class jv.project.PjProject
addDisplay, addGeometry, addGeometry, dispose, dragDisplay, dragInitial, dragVertex, fitDisplays, getAnimation, getDisplay, getDisplays, getGeometry, getNumGeometries, getParameter, getViewer, hasAnimation, hasDisplay, isEnabledAutoFit, markVertices, pickDisplay, pickInitial, pickVertex, removeDisplay, removeGeometries, removeGeometry, selectDisplay, selectGeometry, setAnimation, setBackColor, setBorderType, setDisplay, setEnabledAutoFit, setGeometry, setParameter, 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
 
Methods inherited from interface jv.object.PsUpdateIf
getFather, getName, setParent
 

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

setGeometry

public void setGeometry(PgGeometry geom)
Parameters:
geom - needs to be triangulated

setReuseTriangleRunsWhileIterating

public void setReuseTriangleRunsWhileIterating(boolean flag)

getReuseTriangleRunsWhileIterating

public boolean getReuseTriangleRunsWhileIterating()

getGeometry

public PgGeometryIf getGeometry()
Description copied from class: PjProject
Get currently selected geometry of project. Subclasses should return the major geometry offered to other module projects.

Overrides:
getGeometry in class PjProject
See Also:
PjProject.selectGeometry(PgGeometryIf)

getSelectedGeometry

public PgGeometryIf getSelectedGeometry()

removeGeometry

public void removeGeometry()

computeSubdivisionCurve

public static PgPolygonOnElementSet computeSubdivisionCurve(PgElementSet geom,
                                                            PiVector refElem,
                                                            PdBary[] refBary,
                                                            int depth,
                                                            PgPolygonOnElementSet outpoly,
                                                            PgPolygon outpolyGeom,
                                                            boolean reuseTriangleStrips)
Chaikin-Type subdivision.

Parameters:
geom - underlying triangulation, 2d surface in 3d
refElem - vector of element indices for reference points
refBary - vector of barycentric coordinates for reference points
depth - num of subdivision steps
outpoly - result is put here (intrinsic data), may be null
outpolyGeom - result is put here (3d data), 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

update

public boolean update(java.lang.Object event)
Description copied from interface: PsUpdateIf
Event handling method in the update mechanism. Events not handled will be passed to m_parent or super in this sequence.

Specified by:
update in interface PsUpdateIf
Overrides:
update in class PsObject
See Also:
PsObject.setParent(PsUpdateIf), PsObject.getFather(), PsObject.addUpdateListener(PsUpdateIf)

JavaView© v3.95.000

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