JavaView® v2.00.a4 Debug

jvx.geom
Class PwTetraSet

java.lang.Object
  |
  +--jv.object.PsObject
        |
        +--jvx.geom.PwTetraSet

public class PwTetraSet
extends PsObject

Workshop for tetrahedron related works.

Version:
9. 3.00, 1.00 Seperated from jv.geom.PgTetraSet.
Author:
Samy Khadem-Al-Charieh
See Also:
Serialized Form

Fields inherited from class jv.object.PsObject
HAS_CONFIG_PANEL, HAS_INFO_PANEL, HAS_MATERIAL_PANEL, INSPECTOR_INFO, INSPECTOR_INFO_EXT, IS_DELETED, IS_FIXED, IS_SELECTED, IS_USED, NUM_TAGS
 
Constructor Summary
PwTetraSet()
           
 
Method Summary
 void colorVertices(PgTetraSet tetra, PuFunction function)
          Colors the vertices according to the functionvalues.
 PgElementSet makeSurface(PgTetraSet tetra, PuFunction function, double offset)
          Scans the tetrahedrons of this component for the intersections with the aequi potential surface of the passed value for the passed function.
 void refine(PgTetraSet tetra, PuFunction function, double offset)
          Refines polyhedron adaptive locally.
 
Methods inherited from class jv.object.PsObject
addInspector, addUpdateListener, clearTag, clone, clone, clone, copy, getFather, getInfoPanel, getInspector, getName, getNumObjects, hasInspector, hasTag, hasUpdateListener, init, instanceOf, instanceOf, removeInspector, removeUpdateListener, setName, setParent, setTag, toString, update
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PwTetraSet

public PwTetraSet()
Method Detail

colorVertices

public void colorVertices(PgTetraSet tetra,
                          PuFunction function)
Colors the vertices according to the functionvalues. First the maximal absolute value is searched for. The resulting interval is discretized by 768 steps. Values are coded from zero starting with black and continuing to red, yellow, white for positive (hot) values and to blue, cyan, white for negative (cold) values.

makeSurface

public PgElementSet makeSurface(PgTetraSet tetra,
                                PuFunction function,
                                double offset)
Scans the tetrahedrons of this component for the intersections with the aequi potential surface of the passed value for the passed function.

Its working on the tetrahedrons one by one. First it get the four angle vertices and computes the corresponding function values. Then the three edge vectors pointing from the fourth point to the others are calculated, put into a matrix and with this matrix it is checked if the tetrahedron is degenerated (what results in a warning message and skipping of this tetrahedron).

Next the pairs of vertex and function value are sorted by the function values and afterwards is counted how many have negative signum and how many positive one (if some are zero sum is less than four).
In case of only one vertex having a positive / negative function value the intersection is triangular and a face is added.
In case of two positive and two negative vertices the intersection is quadrangular and also a face is adde.
In case of all vertices zero / positive / negative there is no intersection and so no faces are added.
In case that two of the vertices are positive / negative and the other two are zero the intersection is a line an also nothing is added.

For determining the face if one has to be added the method findZero is used along the edges. Then the vertices are added to the vertex list (if not already contained) and the spanned face is added to the element list. TODO: update nicht hier ausführen (besser in aufrufender Methode)!

See Also:
skMath.findZero(double,double,PuFunction)

refine

public void refine(PgTetraSet tetra,
                   PuFunction function,
                   double offset)
Refines polyhedron adaptive locally. It just looks for tetrahedrons that should be refined, notices their indices in a list and calls refine(Vector) with passing this list.

The criterion is that a tetrahedron is refined, if all of its vertices have neither only positive function values nor only negative nor are all zero.

TODO: A - hier gehts weiter (refinement-edge-Liste prüfen) TODO: refine(): intelligenteres Kriterium? (z.B.: Gaußkrümmung mit Gradienten an Tetraeder-Eckpunkten)
TODO: refine(): Schranke für gewünschte Feinheit? TODO: offset implementieren

See Also:
refine(PiVector)

JavaView® v2.00.a4 Debug

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