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 PgPolygonOnElementSetcomputeSubdivisionCurve(PgElementSet geom, PiVector refElem, PdBary[] refBary, int depth, PgPolygonOnElementSet outpoly, boolean reuseTriangleStrips)Chaikin-Type subdivision.booleangetReuseTriangleRunsWhileIterating()voidinit()Initialize and reset project, stops the running animation if any.voidremoveGeometry()booleansetGeometry(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.voidsetReuseTriangleRunsWhileIterating(boolean flag)voidstart()Method is invoked during loading of a project in JavaView.booleanupdate(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
-
-
-
-
Method Detail
-
init
public void init()
Description copied from class:PjProjectInitialize 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.
-
start
public void start()
Description copied from class:PjProjectMethod 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:
startin classPjProject- See Also:
PvViewerIf.start(),PjProject.isEnabledAutoFit()
-
update
public boolean update(java.lang.Object event)
Description copied from class:PsObjectUpdate 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:
updatein interfacePsUpdateIf- Overrides:
updatein classPsObject- 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:PjProjectInterface 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:
setGeometryin classPjProject- 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 3drefElem- vector of element indices for control pointsrefBary- vector of barycentric coordinates for control pointsdepth- num of subdivision stepsoutpoly- result, computed subdivision curve, may be nullreuseTriangleStrips- use element strips from previous step for current step; should be true in normal case, false only for demonstration purpose- Returns:
- subdivision curve
-
-
"