jvx.geom
Class PwModel
- java.lang.Object
-
- jv.object.PsObject
-
- jvx.project.PjWorkshop
-
- jvx.geom.PwModel
-
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, PsUpdateIf, PjWorkshopIf
- Direct Known Subclasses:
- PwModelTwoParm
public class PwModel extends PjWorkshop
Utility programs for modeling operations on polyhedral surfaces. Contains static functions to, for example, shrink, truncate or stellate a polyhedral surface.- See Also:
- Serialized Form
- Author:
- Ulrich Reitebuch
- Version:
- 22.11.17, 2.61 revised (ur) bugfix in rhombificate method.
25.06.05, 2.60 revised (kp) Method shrink() no longer breaks with nullPtr when unused vertices exist in geom.
25.06.05, 2.50 revised (kp) Code optimization by heavily using existing LA methods.
13.07.04, 2.40 revised (ur) New flag whether to apply modeling or to leave geometry untouched.
05.10.02, 2.31 revised (kp) Slider increment values made smaller.
18.09.02, 2.30 revised (ur) New extrude method added.
08.07.02, 2.20 revised (ur) Added new Method to get the dual PgElementSet.
06.03.02, 2.10 revised (ur) Method dooSabin moved from this class to PwRefineElementSet.
28.12.01, 2.00 revised (kp) Full revision when incorporating the new workshop handling.
24.09.01, 1.70 revised (ur) Now all methods adjust all vector fields and element and vertex textures.
17.09.01, 1.60 revised (ep) Added vector field support.
06.06.01, 1.50 revised (ur) New Method dooSabin added.
05.03.01, 1.41 revised (ur) Adjust element back colors.
02.03.01, 1.40 revised (ur) Enabled truncating of not oriented PgElementSets.
14.12.00, 1.30 revised (ur) New Method punch added, tiny changes in method stellate.
14.11.00, 1.20 revised (ur) Adjust vertex textures and element textures.
10.11.00, 1.10 revised (ur) Bug in maintaining boundary polygons removed, adjusting of vertex and element colors enabled.
19.10.99, 1.02 revised (ur) TruncateFill modified to adjust boundary polygons to the new surface, truncate and shrink to set geom.m_bndList.length to zero.
06.10.99, 1.01 revised (ur) TruncateFill modified to add faces at vertices with only one touching face.
26.07.99, 1.00 created (ur)
-
-
Field Summary
Fields Modifier and Type Field and Description static intEXTRUDEstatic intEXTRUDE_SYMMETRICstatic intPUNCHstatic intRHOMBIFICATEstatic intSHRINKstatic intSTELLATEstatic intTRUNCATEstatic intTRUNCATEFILL-
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
-
Fields inherited from interface jv.project.PjWorkshopIf
MODE_BUG, MODE_STANDARD, MODE_VALIDATE
-
-
Constructor Summary
Constructors Constructor and Description PwModel()Constructor.PwModel(PgElementSet geom)Deprecated.use constructor prj=new PwModel();prj.setGeometry(geom);prj.reset();
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method and Description booleancompute()Update the registered geometry based on the currently selected solid type.static voiddual(PgElementSet geom)Get the dual PgElementSet: Each vertex will be replaced by an element, having the center points of the adjacent elements as vertices; new boundary elements get two additional vertices at the boundary edge midpoints, if the vertex had only one adjacent element, the new element will contain also the old vertex.static voidextrude(PgElementSet geom, double factor)Reduplicate geometry with vertices at the tips of the vertex normals and fill the gaps at the boundaries with quadrilaterals.static voidextrude(PgElementSet geom, double factor, boolean bExtrudeSymmetric)Reduplicate geometry with vertices at the tips of the vertex normals and fill the gaps at the boundaries with quadrilaterals.intgetModelingType()Get the current modeling type.voidinit()Initialisation.booleanisEnabledModeling()Return flag whether to apply current modeling mode to the workshop's geometry.static voidpunch(PgElementSet geom, double factor)Cut out a shrunken copy from every element; the remaining face gets divided into quadrilaterals, each containing one edge of the original element and of the cut-out shrunken copy.voidreset()Reset workshop and geometry to original state.static voidrhombificate(PgElementSet geom, double par)Cut all edges and vertices and fill the gaps with new elements.static voidrhombiTruncate(PgElementSet geom, double faceFactor, double edgeFactor)Rhombi-Truncate the surface.voidsetElementSet(PgElementSet geom)Deprecated.use setGeometry(PgGeometry).voidsetEnabledModeling(boolean flag)Define flag whether to apply current modeling mode to the workshop's geometry.voidsetGeometry(PgGeometry geom)Overwrite the backup element set, on which the modeling tools will work.voidsetModelingType(int type)Set the current modeling type.static voidshrink(PgElementSet geom, double factor)Shrink every face of ElementSet by a constant factor; every face gets its own edges and vertices, all neighbourhood information gets lost.static voidsnubTruncate(PgElementSet geom, double faceFactor, double edgeFactor)static voidstellate(PgElementSet geom, double h)Replace every face by a pyramid.static voidtruncate(PgElementSet geom, double factor, boolean newFaces)Truncate all vertices.booleanupdate(java.lang.Object event)Update the class whenever a child has changed.-
Methods inherited from class jvx.project.PjWorkshop
cancel, close, getDisplay, getDisplays, getGeometry, getMode, getSavedGeometry, getViewer, isModal, isStandalone, ok, removeGeometry, setDisplay, setDisplays, setModal, setMode, setStandalone, 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
-
SHRINK
public static final int SHRINK
- See Also:
- Constant Field Values
-
TRUNCATE
public static final int TRUNCATE
- See Also:
- Constant Field Values
-
STELLATE
public static final int STELLATE
- See Also:
- Constant Field Values
-
TRUNCATEFILL
public static final int TRUNCATEFILL
- See Also:
- Constant Field Values
-
PUNCH
public static final int PUNCH
- See Also:
- Constant Field Values
-
EXTRUDE
public static final int EXTRUDE
- See Also:
- Constant Field Values
-
EXTRUDE_SYMMETRIC
public static final int EXTRUDE_SYMMETRIC
- See Also:
- Constant Field Values
-
RHOMBIFICATE
public static final int RHOMBIFICATE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PwModel
public PwModel(PgElementSet geom)
Deprecated. use constructor prj=new PwModel();prj.setGeometry(geom);prj.reset();Constructor.
-
PwModel
public PwModel()
Constructor.
-
-
Method Detail
-
init
public void init()
Initialisation.- Overrides:
initin classPjWorkshop
-
reset
public void reset()
Reset workshop and geometry to original state.- Overrides:
resetin classPjWorkshop
-
update
public boolean update(java.lang.Object event)
Update the class whenever a child has changed. Method is usually invoked from the children.- Specified by:
updatein interfacePsUpdateIf- Overrides:
updatein classPjWorkshop- Parameters:
event- sender of this update.- Returns:
- true if update was correctly handled by superclass.
- See Also:
PsObject.setParent(PsUpdateIf),PsObject.getFather(),PsObject.addUpdateListener(PsUpdateIf)
-
compute
public boolean compute()
Update the registered geometry based on the currently selected solid type.- See Also:
setGeometry(PgGeometry),setModelingType(int)
-
setGeometry
public void setGeometry(PgGeometry geom)
Overwrite the backup element set, on which the modeling tools will work.- Specified by:
setGeometryin interfacePjWorkshopIf- Overrides:
setGeometryin classPjWorkshop- Parameters:
geom- the workshop modifies this geometry.
-
setElementSet
public void setElementSet(PgElementSet geom)
Deprecated. use setGeometry(PgGeometry).Overwrite the backup elementSet, on which the modeling tools will work.
-
getModelingType
public int getModelingType()
Get the current modeling type.
-
setModelingType
public void setModelingType(int type)
Set the current modeling type. At the same time the parameter bounds of the previous modeling type are saved to the max/min values.
-
setEnabledModeling
public void setEnabledModeling(boolean flag)
Define flag whether to apply current modeling mode to the workshop's geometry.
-
isEnabledModeling
public boolean isEnabledModeling()
Return flag whether to apply current modeling mode to the workshop's geometry.
-
shrink
public static void shrink(PgElementSet geom, double factor)
Shrink every face of ElementSet by a constant factor; every face gets its own edges and vertices, all neighbourhood information gets lost.- Parameters:
factor- shrinking factor- Author:
- Ulrich Reitebuch
- Version:
- 11.09.01, 1.30 revised (ep) Keep vertex based vector fields.
10.11.00, 1.20 revised (ur) Adjust vertex textures and element textures.
07.11.00, 1.10 revised (ur) Use vertex colors of parent vertices for new vertices.
26.07.99, 1.00 created (ur)
-
stellate
public static void stellate(PgElementSet geom, double h)
Replace every face by a pyramid. Dimension of Elements will be set to 3.- Parameters:
h- height of pyramid- Author:
- Ulrich Reitebuch
- Version:
- 13.09.01, 1.30 revised (ep) Handle vertex and element based vector fields.
14.11.00, 1.20 revised (ur) Adjust vertex textures and element textures.
07.11.00, 1.10 revised (ur) Use colors of parent faces for new triangles and blend colors for new vertices.
26.07.99, 1.00 created (ur)
-
truncate
public static void truncate(PgElementSet geom, double factor, boolean newFaces)
Truncate all vertices.- Parameters:
geom- Geometry to operate on.factor- blend factor for VerticesnewFaces- true = replace truncated vertices with new faces- Author:
- Ulrich Reitebuch
- Version:
- 14.06.02, 1.90 revised (ur) Avoid PgVertexStar.makeVertexStar(*,*,-1).
28.01.02, 1.80 revised (ur) Correct handling of elements at boundaries of not oriented PgElementSets.
20.ß9.01, 1.70 revised (ur) Adjust Element Textures.
13.09.01, 1.60 revised (ep) Handle element and vertex based vector fields.
12.09.01, 1.50 revised (ep) Interpolate vertex colors.
02.03.01, 1.40 revised (ur) Enabled truncating of not oriented PgElementSets.
14.11.00, 1.30 revised (ur) Adjust vertex textures.
10.11.00, 1.20 revised (ur) Adjust colors of elements and vertices; bug in maintaining boundary polygons removed.
19.04.00, 1.10 revised (kp) Use bndList when accessing boundaries.
26.07.99, 1.00 created (ur)
-
rhombificate
public static void rhombificate(PgElementSet geom, double par)
Cut all edges and vertices and fill the gaps with new elements. Each edge will be replaced by a quadrilateral, original elements are shrunken and new n-gonal faces are inserted at vertices with n original faces touching.- Author:
- Ulrich Reitebuch
- Version:
- 22.11.17, 1.01 revised (ur) bugfix - recompute neighbourhood before fixing boundary polygons.
28.06.08, 1.00 created (ur).
-
snubTruncate
public static void snubTruncate(PgElementSet geom, double faceFactor, double edgeFactor)
-
rhombiTruncate
public static void rhombiTruncate(PgElementSet geom, double faceFactor, double edgeFactor)
Rhombi-Truncate the surface. Each n-face of the geometry will be replaced by a 2n-face, each valence n vertex by a 2n-face and each edge by a quadrilateral.- Parameters:
geom- Geometry to operate on.faceFactor- factor to move vertices to the face centeredgeFactor- factor to move vertices to the edge center- Author:
- Ulrich Reitebuch
- Version:
- 08.06.08, 1.00 created (ur)
-
punch
public static void punch(PgElementSet geom, double factor)
Cut out a shrunken copy from every element; the remaining face gets divided into quadrilaterals, each containing one edge of the original element and of the cut-out shrunken copy.- Parameters:
factor- shrinking factor for the cut-out element.- Author:
- Ulrich Reitebuch
- Version:
- 20.09.01, 1.10 revised (ur) Adjust Vector Fields.
13.12.00, 1.00 created (ur)
-
dual
public static void dual(PgElementSet geom)
Get the dual PgElementSet: Each vertex will be replaced by an element, having the center points of the adjacent elements as vertices; new boundary elements get two additional vertices at the boundary edge midpoints, if the vertex had only one adjacent element, the new element will contain also the old vertex. Each element will be replaced by a vertex at its center.Create new boundary only when original geometry has boundary.
- Author:
- Ulrich Reitebuch
- Version:
- 07.07.04, 1.20 revised (ur) Hold Boundary polygon end points.
30.03.03, 1.10 revised (kp) Vertex and element normals transferred to dual mesh.
05.07.02, 1.00 created (ur)
-
extrude
public static void extrude(PgElementSet geom, double factor)
Reduplicate geometry with vertices at the tips of the vertex normals and fill the gaps at the boundaries with quadrilaterals.- Parameters:
factor- Factor to multiply vertex normals with.- Author:
- Ulrich Reitebuch
- Version:
- 04.09.02, 1.00 created (ur)
-
extrude
public static void extrude(PgElementSet geom, double factor, boolean bExtrudeSymmetric)
Reduplicate geometry with vertices at the tips of the vertex normals and fill the gaps at the boundaries with quadrilaterals.- Parameters:
factor- Factor to multiply vertex normals with.bExtrudeSymmetric- Specify if the original vertices shall be moved in -normal direction.- Author:
- Ulrich Reitebuch
- Version:
- 29.05.09, 1.10 revised (ur) New parameter for symmetric extrusion, orientation flipped.
04.09.02, 1.00 created (ur)
-
-
"