JavaView© v3.95.000

jvx.geom
Class PwLIC

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

public class PwLIC
extends PjWorkshop
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.

See Also:
PnLIC, Serialized Form

Field Summary
 
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
PwLIC()
           
 
Method Summary
 void close()
          Call this method to shutdown the workshop.
 void computeTextureSize()
          Called from info panel.
 double getCoarseness()
           
 double getContrast()
           
 int getConvolutionWidth()
           
 boolean getFast()
          Get flag if 4th-order Runge-Kutta or Euler integration is used.
 PgGeometry getGeometry()
          Get the assigned geometry on which this workshop operates.
 boolean getIgnoreDirection()
          Get flag is workshop makes LIC texture visible after every element.
 int getLICSize()
           
 int getMinConvolutionWidth()
           
 PnLIC getNumericLICInstance()
          HACK:
 boolean getSendManyUpdates()
           
 double getStepSize()
           
 java.awt.Dimension getTextureSize()
           
 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)
          Set flag which determines if 4th-order Runge-Kutta or Euler integration will be used for integration along vector field.
 void setGeometry(PgElementSet geom)
          Sets the triangulation.
 void setIgnoreDirection(boolean flag)
          Ignores the direction of vertex based vector fields, i.e.
 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 setSendManyUpdates(boolean flag)
          Set flag is workshop makes LIC texture visible after every element.
 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 startPreview()
           
 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 jvx.project.PjWorkshop
cancel, getDisplay, getDisplays, getSavedGeometry, getViewer, isModal, ok, removeGeometry, reset, setDisplay, 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
 

Constructor Detail

PwLIC

public PwLIC()
Method Detail

init

public void init()
Resets all properties to default values.

Overrides:
init in class PjWorkshop

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.

Geometry is triangulated if it is no triangulation.

Parameters:
geom - may be null to indicate that the geometry shall be removed from this workshop

getGeometry

public PgGeometry getGeometry()
Description copied from class: PjWorkshop
Get the assigned geometry on which this workshop operates.

Specified by:
getGeometry in interface PjWorkshopIf
Overrides:
getGeometry in class PjWorkshop
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.

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.

computeTextureSize

public void computeTextureSize()
Called from info panel.


setFast

public void setFast(boolean flag)
Set flag which determines if 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()
Get flag if 4th-order Runge-Kutta or Euler integration is used.


setIgnoreDirection

public void setIgnoreDirection(boolean flag)
Ignores the direction of vertex based vector fields, i.e. at each point there are two possible vectors: + and - the original vector.

Since:
JavaView 2.48.007

getIgnoreDirection

public boolean getIgnoreDirection()
Get flag is workshop makes LIC texture visible after every element.

Since:
JavaView 2.48.007

setSendManyUpdates

public void setSendManyUpdates(boolean flag)
Set flag is workshop makes LIC texture visible after every element.

Since:
JavaView 2.49.004

getSendManyUpdates

public boolean getSendManyUpdates()
Since:
JavaView 2.49.004

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()

getCoarseness

public double getCoarseness()
Since:
JavaView 2.65.000

getStepSize

public double getStepSize()
Since:
JavaView 2.65.000

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()

getContrast

public double getContrast()
Since:
JavaView 2.65.000

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()

getTextureSize

public java.awt.Dimension getTextureSize()

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()

getNumericLICInstance

public PnLIC getNumericLICInstance()
HACK:


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()

startPreview

public void startPreview()

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.

Overrides:
close in class PjWorkshop

run

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

JavaView© v3.95.000

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