JavaView® v2.12

jvx.geom
Class PwLIC

java.lang.Object
  |
  +--jv.object.PsObject
        |
        +--jvx.geom.PwLIC
All Implemented Interfaces:
java.lang.Cloneable, PsUpdateIf, java.lang.Runnable, java.io.Serializable

public class PwLIC
extends PsObject
implements java.lang.Runnable

Make Line Integral Convolution texture image to given vector field in a JavaView workshop. Uses the methods provided by class jvx.numeric.PnLIC.
All computation is done in a seperate thread. If you register as an update listener to this object, then you will receive an update whenever a LIC computation has been ended.

Using this class:
Tell it about the geometry with a vector field: setGeometry(PgElementSet).
Select a vector field: setVectorFieldIndex(int).
Configure LIC: setConvolutionWidth(int), setLICSize(int),setFast(boolean), ...
Compute LIC: startLIC().

When you want to get rid of an instance of this workshop you should call the close() method to clean up things.

Version:
13.08.01, 3.40 revised (ep) Added methods for configuration of LIC.
08.07.01, 3.30 revised (ep) Labeling moved from Button to Label.
07.06.01, 3.20 revised (ep) Added vector field selection.
18.09.00, 3.10 revised (ep) bugfix vertex based vector fields in method run().
19.06.00, 3.00 created (ep)
Author:
Eike Preuss
See Also:
PnLIC, Serialized Form

Fields inherited from class jv.object.PsObject
HAS_CONFIG_PANEL, HAS_INFO_PANEL, HAS_MATERIAL_PANEL, HAS_TEXTURE_PANEL, INSPECTOR_INFO, INSPECTOR_INFO_EXT, IS_DELETED, IS_FIXED, IS_SELECTED, IS_USED, NUM_TAGS
 
Constructor Summary
PwLIC()
           
 
Method Summary
 void close()
          Call this method to shutdown the workshop.
 int getConvolutionWidth()
           
 boolean getFast()
           
 PgElementSet getGeometry()
           
 int getLICSize()
           
 int getMinConvolutionWidth()
           
 int getVectorFieldIndex()
           
 void init()
          Resets all properties to default values.
 boolean isComputingLIC()
          Checks whether workshop is currently working on a LIC texture.
 void run()
           
 void setConvolutionWidth(int convWidth)
          Sets the number of pixels that are convoluted in a neighbourhood of a pixel to compute the new value of that pixel.
 void setFast(boolean flag)
          Sets whether 4th-order runge-kutta or euler integration will be used for integration along vector field.
 void setGeometry(PgElementSet geom)
          Sets the triangulation.
 void setLICSize(int aSize)
          Sets the size that the longest edge of the triangulation will have in the texture image (in pixels).
 void setMinConvolutionWidth(int minconvwidth)
          Sets the least number of pixels that are convoluted in a neighbourhood of a pixel to compute the new value of that pixel, even if the velocity of the vector field is zero (or very very small).
 void setVectorFieldIndex(int vfIndex)
          Set the vector field that will be visualized by index in the element set as set by setGeometry(PgElementSet), beginning with index 0.
 void startLIC()
          Starts a new thread that computes the LIC texture.
 void stopLIC()
          Stops the LIC thread if it is currently running.
 boolean update(java.lang.Object event)
          Update the class whenever a child has changed.
 
Methods inherited from class jv.object.PsObject
addInspector, addUpdateListener, assureInspector, clearTag, clone, clone, clone, copy, getFather, getInfoPanel, getInspector, getName, getNumObjects, hasInspector, hasTag, hasUpdateListener, instanceOf, instanceOf, removeInspector, removeUpdateListener, setName, setParent, setTag, toString, updatePanels
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PwLIC

public PwLIC()
Method Detail

init

public void init()
Resets all properties to default values.
Overrides:
init in class PsObject

setGeometry

public void setGeometry(PgElementSet geom)
Sets the triangulation. It must be a triangulation and should have at least one vector field (but that last point is not necessary; you may add vector fields later and send an update).
The workshop adds himself as an update listener to the geometry. A call of close will remove this connection.
Parameters:
geom - may be null to indicate that the geometry shall be removed from this workshop

getGeometry

public PgElementSet getGeometry()
Returns:
null if no geometry has been set

setVectorFieldIndex

public void setVectorFieldIndex(int vfIndex)
Set the vector field that will be visualized by index in the element set as set by setGeometry(PgElementSet), beginning with index 0.
Parameters:
vfIndex - index of vector field that shall be visualized 0,...
See Also:
setGeometry(PgElementSet)

getVectorFieldIndex

public int getVectorFieldIndex()
Returns:
-1 if no vector field has been set

update

public boolean update(java.lang.Object event)
Update the class whenever a child has changed. Method is usually invoked from the children.
Overrides:
update in class PsObject
Following copied from class: jv.object.PsObject
See Also:
PsObject.setParent(PsUpdateIf), PsObject.getFather(), PsObject.addUpdateListener(PsUpdateIf)

setFast

public void setFast(boolean flag)
Sets whether 4th-order runge-kutta or euler integration will be used for integration along vector field.
Parameters:
flag - true: euler; false: 4th order r.-k.

getFast

public boolean getFast()

setConvolutionWidth

public void setConvolutionWidth(int convWidth)
Sets the number of pixels that are convoluted in a neighbourhood of a pixel to compute the new value of that pixel. This number is multiplied with the velocity of the vector field at that point to get the actual convolution window.

getConvolutionWidth

public int getConvolutionWidth()

setMinConvolutionWidth

public void setMinConvolutionWidth(int minconvwidth)
Sets the least number of pixels that are convoluted in a neighbourhood of a pixel to compute the new value of that pixel, even if the velocity of the vector field is zero (or very very small). This least number of pixel may be 0 of course!

getMinConvolutionWidth

public int getMinConvolutionWidth()

setLICSize

public void setLICSize(int aSize)
Sets the size that the longest edge of the triangulation will have in the texture image (in pixels). You MUST set geometry to a valid triangulation before calling this method or you'll get a NullPointerException!
See Also:
setGeometry(PgElementSet)

getLICSize

public int getLICSize()

isComputingLIC

public boolean isComputingLIC()
Checks whether workshop is currently working on a LIC texture.
Returns:
true if the LIC thread is running at the moment
See Also:
startLIC(), stopLIC()

startLIC

public void startLIC()
Starts a new thread that computes the LIC texture.
See Also:
isComputingLIC(), stopLIC()

stopLIC

public void stopLIC()
Stops the LIC thread if it is currently running.
See Also:
isComputingLIC(), startLIC()

close

public void close()
Call this method to shutdown the workshop. Removes the workshop from the list of update listeners of the geometry and stops any LIC processes that are currently working.

run

public void run()
Specified by:
run in interface java.lang.Runnable

JavaView® v2.12

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