JavaView© v3.95.000

jvx.geom
Class PwSimplify

java.lang.Object
  extended byjv.object.PsObject
      extended byjvx.project.PjWorkshop
          extended byjvx.geom.PwSimplify
All Implemented Interfaces:
java.lang.Cloneable, PjWorkshopIf, PsUpdateIf, java.io.Serializable

public class PwSimplify
extends PjWorkshop

Simplifies a geometry by collapsing edges. Edges to remove are selected by smallest surface error in the quadric metric following the algorithm of Heckbert and Garland.

See Also:
Serialized Form

Field Summary
static int ABSOLUTE_SLIDER
           
 int m_sliderType
           
static int PERCENT_SLIDER
           
 
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
PwSimplify()
          Constructor.
PwSimplify(PgElementSet anElementSet)
          Deprecated. use constructor prj=new PwSimplify();prj.setGeometry(geom);prj.reset();
 
Method Summary
 void close()
          Remove all internal variables and break external links.
 void init()
          Initialization.
 boolean isEnabledCheckAngles()
          Determine if inner angles of triangles are checked during simplification.
 boolean isEnabledCheckNormals()
          Check if normals of new faces are allowed to differ from old normals by more than the initial value of m_maxAngle.
 boolean isEnabledFlipEdges()
          Determine if triangle edges are flipped before simplification.
 boolean isEnabledForceSimplify()
          Check if other simplification criteria are allowed to be relaxed during the simplification in order to simplify down to the requested remaining number of elements.
 boolean isEnabledKeepBoundary()
          Check if boundary points of PgElementSet are kept and not removed during simplification.
 boolean isEnabledKeepMarkedVertices()
          Check if marked points of PgElementSet are kept and not removed during simplification.
 boolean isShowingNumTriangles()
          Whether the number of triangles is shown in the registered display.
 void reset()
          Remove all previously done simplification and set the workshop to its initial status.
 void setDisplay(PvDisplayIf disp)
          Sets the display used for showing the number of triangles.
 void setEnabledCheckAngles(boolean flag)
          Determine if inner angles of triangles are checked during simplification.
 void setEnabledCheckNormals(boolean flag)
          Determine if normals of new faces are allowed to differ from old normals by more than the initial value of m_maxAngle.
 void setEnabledFlipEdges(boolean flag)
          Determine if triangle edges are flipped before simplification.
 void setEnabledForceSimplify(boolean flag)
          Determine if other simplification criteria are allowed to be relaxed during the simplification in order to simplify down to the requested remaining number of elements.
 void setEnabledKeepBoundary(boolean flag)
          Determine if boundary points of PgElementSet are kept and not removed during simplification.
 void setEnabledKeepMarkedVertices(boolean flag)
          Determine if marked points of PgElementSet are kept and not removed during simplification.
 void setGeometry(PgElementSet geom)
          Register a geometry on this workshop will operate.
 void setSliderType(int type)
          Set type of slider to PERCENT_SLIDER or ABSOLUTE_SLIDER.
 void showNumTriangles(boolean flag)
          Whether to show the number of triangles in the registered display.
 int simplify()
          Call simplify(#faces) or simplifyByFactor(factor) according to Slider type.
 int simplify(int remainElements)
          Simplify the PgElementSet until it has few enough elements.
 int simplifyByFactor(double fac)
          Reduce number of elements of a surface to a given percentage.
 boolean update(java.lang.Object event)
          Update if workshop or slider values change.
 void updateSlider()
          Adjust slider bounds and value to the geometry.
 
Methods inherited from class jvx.project.PjWorkshop
cancel, getDisplay, getDisplays, getGeometry, getSavedGeometry, getViewer, isModal, ok, removeGeometry, setDisplays, setGeometry, setModal, setViewer
 
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.object.PsUpdateIf
getFather, getName, setParent
 

Field Detail

PERCENT_SLIDER

public static final int PERCENT_SLIDER
See Also:
Constant Field Values

ABSOLUTE_SLIDER

public static final int ABSOLUTE_SLIDER
See Also:
Constant Field Values

m_sliderType

public int m_sliderType
Constructor Detail

PwSimplify

public PwSimplify(PgElementSet anElementSet)
Deprecated. use constructor prj=new PwSimplify();prj.setGeometry(geom);prj.reset();

Constructor.


PwSimplify

public PwSimplify()
Constructor.

Method Detail

init

public void init()
Initialization.

Overrides:
init in class PjWorkshop

setGeometry

public void setGeometry(PgElementSet geom)
Register a geometry on this workshop will operate.


updateSlider

public void updateSlider()
Adjust slider bounds and value to the geometry.


setSliderType

public void setSliderType(int type)
Set type of slider to PERCENT_SLIDER or ABSOLUTE_SLIDER.


reset

public void reset()
Remove all previously done simplification and set the workshop to its initial status.

Overrides:
reset in class PjWorkshop

close

public void close()
Remove all internal variables and break external links. Here the control grid is removed from the display.

Overrides:
close in class PjWorkshop
Since:
JavaView 2.87.000

isEnabledKeepBoundary

public boolean isEnabledKeepBoundary()
Check if boundary points of PgElementSet are kept and not removed during simplification.


setEnabledKeepBoundary

public void setEnabledKeepBoundary(boolean flag)
Determine if boundary points of PgElementSet are kept and not removed during simplification.


isEnabledKeepMarkedVertices

public boolean isEnabledKeepMarkedVertices()
Check if marked points of PgElementSet are kept and not removed during simplification.


setEnabledKeepMarkedVertices

public void setEnabledKeepMarkedVertices(boolean flag)
Determine if marked points of PgElementSet are kept and not removed during simplification.


isEnabledCheckNormals

public boolean isEnabledCheckNormals()
Check if normals of new faces are allowed to differ from old normals by more than the initial value of m_maxAngle.


setEnabledCheckNormals

public void setEnabledCheckNormals(boolean flag)
Determine if normals of new faces are allowed to differ from old normals by more than the initial value of m_maxAngle.


isEnabledForceSimplify

public boolean isEnabledForceSimplify()
Check if other simplification criteria are allowed to be relaxed during the simplification in order to simplify down to the requested remaining number of elements.


setEnabledForceSimplify

public void setEnabledForceSimplify(boolean flag)
Determine if other simplification criteria are allowed to be relaxed during the simplification in order to simplify down to the requested remaining number of elements.


isEnabledCheckAngles

public boolean isEnabledCheckAngles()
Determine if inner angles of triangles are checked during simplification.


setEnabledCheckAngles

public void setEnabledCheckAngles(boolean flag)
Determine if inner angles of triangles are checked during simplification.


isEnabledFlipEdges

public boolean isEnabledFlipEdges()
Determine if triangle edges are flipped before simplification.


setEnabledFlipEdges

public void setEnabledFlipEdges(boolean flag)
Determine if triangle edges are flipped before simplification.


setDisplay

public void setDisplay(PvDisplayIf disp)
Sets the display used for showing the number of triangles.

Specified by:
setDisplay in interface PjWorkshopIf
Overrides:
setDisplay in class PjWorkshop
See Also:
showNumTriangles(boolean)

showNumTriangles

public void showNumTriangles(boolean flag)
Whether to show the number of triangles in the registered display. This is done by adding a point set to the display and setting its name correspondingly.

Since:
JavaView 3.57
See Also:
setDisplay(PvDisplayIf)

isShowingNumTriangles

public boolean isShowingNumTriangles()
Whether the number of triangles is shown in the registered display. This is done by adding a point set to the display and setting its name correspondingly.

Since:
JavaView 3.57

simplify

public int simplify()
Call simplify(#faces) or simplifyByFactor(factor) according to Slider type.


simplifyByFactor

public int simplifyByFactor(double fac)
Reduce number of elements of a surface to a given percentage. If the total number of elements is num and the factor 0 < fac < 1 (within 0. and 1.) then the number of remaining elements is aimed at num*val.

Parameters:
fac - fac between 0. and 1.
Returns:
actual new number of elements, -1 if an error occured

simplify

public int simplify(int remainElements)
Simplify the PgElementSet until it has few enough elements.

Parameters:
remainElements - requested number of remaining elements.
Returns:
actual new number of elements, -1 if an error occured

update

public boolean update(java.lang.Object event)
Update if workshop or slider values change.

Specified by:
update in interface PsUpdateIf
Overrides:
update in class PjWorkshop
Parameters:
event - sender of this update.
Returns:
true if update was correctly handled by superclass.

JavaView© v3.95.000

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