jvx.vector
Class PwLIC
- java.lang.Object
-
- jv.object.PsObject
-
- jvx.project.PjWorkshop
-
- jvx.vector.PwLIC
-
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, java.lang.Runnable, PsUpdateIf, PjWorkshopIf
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 classjvx.numeric.PnLIC.
All computation is done in a separate 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(PgGeometry).
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- Author:
- Eike Preuss
- Version:
- 09.12.06, 4.00 revised (kp) Moved to jvx.vector from jvx.geom.
20.03.03, 3.80 revised (ep) Some missing getters and setters implemented. Fast preview.
16.01.03, 3.70 revised (ep) Switch for frequent updates feature added.
15.01.03, 3.60 revised (ep) New integration type 'ignore direction' added (methods get/setIgnoreDirection).
17.12.02, 3.50 revised (ep) Added contrast parameter.
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)
-
-
Field Summary
-
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 PwLIC()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description voidclose()Call this method to shutdown the workshop.voidcomputeTextureSize()Called from info panel.doublegetCoarseness()doublegetContrast()intgetConvolutionWidth()booleangetFast()Get flag if 4th-order Runge-Kutta or Euler integration is used.booleangetIgnoreDirection()Get flag is workshop makes LIC texture visible after every element.intgetLICSize()intgetMinConvolutionWidth()PnLICgetNumericLICInstance()HACK:booleangetSendManyUpdates()doublegetStepSize()java.awt.DimensiongetTextureSize()intgetVectorFieldIndex()Get index of selected vector field.voidinit()Resets all properties to default values.booleanisComputingLIC()Checks whether workshop is currently working on a LIC texture.voidrun()voidsetConvolutionWidth(int convWidth)Sets the number of pixels that are convoluted in a neighbourhood of a pixel to compute the new value of that pixel.voidsetFast(boolean flag)Set flag which determines if 4th-order Runge-Kutta or Euler integration will be used for integration along vector field.voidsetGeometry(PgGeometry geom)Sets the triangulation.voidsetIgnoreDirection(boolean flag)Ignores the direction of vertex based vector fields, i.e.voidsetLICSize(int aSize)Sets the size that the longest edge of the triangulation will have in the texture image (in pixels).voidsetMinConvolutionWidth(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).voidsetSendManyUpdates(boolean flag)Set flag is workshop makes LIC texture visible after every element.voidsetVectorFieldIndex(int vfIndex)Set the vector field that will be visualized by index in the element set as set bysetGeometry(PgGeometry), beginning with index 0.voidstartLIC()Starts a new thread that computes the LIC texture.voidstartLIC(boolean bPreview)Starts a new thread that computes the LIC texture.voidstopLIC()Stops the LIC thread if it is currently running.booleanupdate(java.lang.Object event)Update the class whenever a child has changed.-
Methods inherited from class jvx.project.PjWorkshop
cancel, getDisplay, getDisplays, getGeometry, getMode, getSavedGeometry, getViewer, isModal, isStandalone, ok, removeGeometry, reset, 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
-
-
-
-
Method Detail
-
init
public void init()
Resets all properties to default values.- Overrides:
initin classPjWorkshop
-
setGeometry
public void setGeometry(PgGeometry 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.
- Specified by:
setGeometryin interfacePjWorkshopIf- Overrides:
setGeometryin classPjWorkshop- Parameters:
geom- may benullto indicate that the geometry shall be removed from this workshop- Version:
- 03.02.07, 2.00 revised (kp) Method now overloads PjWorkshop#setGeometry(PgGeometry).
21.02.04, 1.20 revised (kp) Triangulate geometry if it is no triangulation.
21.02.04, 1.10 revised (kp) Call super.setGeometry() to allow cancel of workshop.
-
getVectorFieldIndex
public int getVectorFieldIndex()
Get index of selected vector field.- Returns:
- -1 if no vector field 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 bysetGeometry(PgGeometry), beginning with index 0.- Parameters:
vfIndex- index of vector field that shall be visualized 0,...- See Also:
setGeometry(PgGeometry)
-
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)
-
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(PgGeometry)
-
getLICSize
public int getLICSize()
-
getTextureSize
public java.awt.Dimension getTextureSize()
-
getNumericLICInstance
public PnLIC getNumericLICInstance()
HACK:
-
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()
-
startLIC
public void startLIC(boolean bPreview)
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.- Overrides:
closein classPjWorkshop
-
run
public void run()
- Specified by:
runin interfacejava.lang.Runnable- Version:
- 18.09.00, 1.10 revised (ep) bugfix vertex based vector fields.
-
-
"