Class BurnBaseView

  • Direct Known Subclasses:
    BurnCoolTipView, BurnHeatView, BurnRegularView

    public class BurnBaseView
    extends java.lang.Object
    The default probe burning type view. The class define the default burning point's geometry shape, and burning path mark behavior.
    Author:
    Ruida Cheng
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) javax.vecmath.Color3f ambientColor
      Define attenuation lighting colors.
      (package private) javax.vecmath.Color3f black
      DOCUMENT ME!
      (package private) javax.vecmath.Color3f blue
      DOCUMENT ME!
      protected javax.vecmath.Color4f burnColor
      Burning point surface color.
      protected int burnIndex
      Current burning point index.
      protected javax.media.j3d.BranchGroup[] burningBG
      Burning point branch group array, used to switch between different buring point.
      protected javax.media.j3d.BranchGroup burnRootParentBG
      The root branch group the default burning point.
      protected int burnType
      Burning type.
      (package private) javax.vecmath.Color3f cyan
      DOCUMENT ME!
      (package private) javax.vecmath.Color3f diffuseColor
      DOCUMENT ME!
      protected int diffVoxels
      Volume difference in voxels for the tumor surface and burning sphere, ellipsoid packings.
      (package private) javax.vecmath.Color3f emissiveColor
      DOCUMENT ME!
      (package private) javax.vecmath.Color3f green
      DOCUMENT ME!
      (package private) java.util.Vector<java.lang.Integer> indexVector
      vector stack to record the burning index.
      protected float[] m_afLength
      DOCUMENT ME!
      protected int[] m_aiConnect
      DOCUMENT ME!
      protected int[] m_aiImage
      The 3D MRI image stored as a 1D array.
      protected java.util.BitSet m_aiMask
      DOCUMENT ME!
      protected BurnBaseView.UnorderedSetInt[] m_akAdjacent
      DOCUMENT ME!
      private javax.media.j3d.Shape3D[] m_akSurfaceShape
      DOCUMENT ME!
      protected javax.vecmath.Point3f[] m_akVertex
      DOCUMENT ME!
      protected float m_fXDelta
      The size of a voxel, in voxel units.
      protected float m_fYDelta
      The size of a voxel, in voxel units.
      protected float m_fZDelta
      The size of a voxel, in voxel units.
      protected int m_iBackThreshold
      DOCUMENT ME!
      protected int m_iBrightThreshold
      DOCUMENT ME!
      protected int m_iDMax
      DOCUMENT ME!
      protected int m_iEQuantity
      DOCUMENT ME!
      protected int m_iMaxThreshold
      DOCUMENT ME!
      protected int m_iMedianIntensity
      DOCUMENT ME!
      protected int m_iMinThreshold
      histogram parameters.
      protected int m_iQuantity
      The MRI image bounds and quantity of voxels.
      protected int m_iTQuantity
      DOCUMENT ME!
      protected int m_iVQuantity
      mesh data.
      protected int m_iXBound
      The MRI image bounds and quantity of voxels.
      protected int m_iYBound
      The MRI image bounds and quantity of voxels.
      protected int m_iZBound
      The MRI image bounds and quantity of voxels.
      protected javax.vecmath.Point3f m_kCenter
      DOCUMENT ME!
      protected java.util.HashMap<BurnBaseView.Edge,​java.lang.Integer> m_kEMap
      DOCUMENT ME!
      protected javax.vecmath.Matrix3f m_kRotate
      DOCUMENT ME!
      protected java.util.Vector<MaskBurnAttribute> maskBurnVector
      Reference to Mask burning attribute.
      protected int numBurn
      Initialized the number of burning point.
      private int nVoxels
      factor above median at which edge values are taken to zero.
      (package private) javax.vecmath.Color3f orange
      DOCUMENT ME!
      (package private) javax.vecmath.Color4f orangeColor
      DOCUMENT ME!
      protected com.sun.j3d.utils.picking.PickCanvas pickCanvas
      Agent to set the burning point sphere pickable.
      (package private) javax.vecmath.Color3f pink
      DOCUMENT ME!
      protected JPanelProbe probePanel
      JPanelProbe reference.
      (package private) javax.vecmath.Color3f purple
      DOCUMENT ME!
      (package private) javax.vecmath.Color4f purpleColor
      DOCUMENT ME!
      private float radius
      image space burning point radius.
      protected javax.vecmath.Point3f radiusPt
      Burning sphere radius, semiX, Y, Z in point format.
      (package private) javax.vecmath.Color3f red
      Define colors.
      (package private) javax.vecmath.Color3f sepcualarColor
      DOCUMENT ME!
      protected boolean showLabels
      Flag to show the burning point label.
      (package private) javax.vecmath.Color3f silver
      DOCUMENT ME!
      protected javax.media.j3d.BranchGroup[] sphereBG
      Default burning point array.
      protected com.sun.j3d.utils.geometry.Sphere spheres
      Burning point sphere.
      protected SurfaceRender surfaceRender
      Surface Render reference.
      protected javax.media.j3d.BranchGroup[] textLabelBG
      Burning point label array.
      protected javax.vecmath.Vector3f translate
      Burning point center.
      protected java.util.BitSet volumeMask
      Reference to burning point voluem mask.
      protected float volumeSpaceRadius
      Default volume space burning point radius.
      (package private) javax.vecmath.Color3f yellow
      DOCUMENT ME!
    • Constructor Summary

      Constructors 
      Constructor Description
      BurnBaseView​(SurfaceRender _surfaceRender, JPanelProbe _probePanel, javax.media.j3d.BranchGroup _burnRootParentBG)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void buildBurnSceneGraph​(float radius, float time)
      Build the image scene graph structure.
      void buildBurnSceneGraph​(float radius, float time, javax.vecmath.Color3f color, int index)
      Only used by the default burning point type to reset the image sence graph when the burning sphere radius and time changes.
      protected javax.media.j3d.BranchGroup buildEntryPoint()
      Build the entry point image scene graph structure.
      protected void buildText​(int index, java.lang.String str, javax.vecmath.Vector3f pos)
      Attach some 3D text to a BranchGroup or TransformGroup.
      void calcTotalVolume​(SurfaceAttributes surface, TreatmentInformation treatment)
      Calculate the burning points total volume.
      protected void calcVoxels()
      Identify all voxels that are inside or on the mesh that represents the brain surface.
      protected javax.media.j3d.BranchGroup createSurface​(ModelTriangleMesh[] meshes, javax.vecmath.Color4f color, int mode)
      Creates a surface in the scene graph from an array of triangle meshes.
      void dispose()
      Dispose memory.
      void enableBurnLabels​(boolean flag)
      Attach or detach burn labels.
      protected void estimateEllipsoid()
      Approximate the brain surface by an ellipsoid.
      int findBurnPoint​(javax.media.j3d.Shape3D pickedShape)
      Check whether the burning sphere is picked or not.
      protected void floodFill​(int iX, int iY, int iZ)
      Identify voxels enclosed by the brain surface by using a flood fill.
      protected void generateEllipsoidMesh​(int burnType, float tipLen, int iSubdivisions, boolean isImageSpace)
      Tessellate a unit sphere centered at the origin.
      protected void generateSphereMesh​(int iSubdivisions, boolean isImageSpace)
      Tessellate a unit sphere centered at the origin.
      java.util.BitSet getBurnMask()
      Get the burnning point ( sphere packing or ellipsoid packing ) mask.
      javax.vecmath.Color4f getColor()
      Get the buring point surface color.
      float getDiffVolume()
      Get the volume difference btw tumor surface and burning sphere packings.
      protected int getIndex​(int iX, int iY, int iZ)
      A convenience function for mapping the 3D voxel position (iX,iY,iZ) to a 1D array index.
      protected void getInsideVoxels()
      Identify all voxels that are inside or on the mesh that represents the brain surface.
      protected int getIntersectX​(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, int iY, int iZ)
      Compute the point of intersection between a line (0,iY,iZ)+t(1,0,0) and the triangle defined by the three input points.
      protected int getIntersectY​(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, int iX, int iZ)
      Compute the point of intersection between a line (iX,0,iZ)+t(0,1,0) and the triangle defined by the three input points.
      protected int getIntersectZ​(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, int iX, int iY)
      Compute the point of intersection between a line (iX,iY,0)+t(0,0,1) and the triangle defined by the three input points.
      javax.vecmath.Point3f getRadius()
      Get the radius( semiX, semiY, semiZ).
      static javax.vecmath.Vector3f getRotAngle​(javax.media.j3d.Transform3D t3D)
      DOCUMENT ME!
      protected javax.media.j3d.Shape3D getShape​(javax.media.j3d.BranchGroup root)
      Get the shape burning point surface.
      javax.media.j3d.BranchGroup getSphereBG()
      Get the current burning point brach group.
      javax.vecmath.Vector3f getTranslate()
      Get the burning point center coordinates.
      float getVolume()
      Get the total tumor voxels of the current treatment in mm^3.
      void histogramAnalysis()
      Analyze the histogram of the 10-bit binned 3D MRI.
      protected javax.media.j3d.BranchGroup markProbe()
      Mark the probing guide line.
      protected void reGenerateEllipsoidMesh​(int iSubdivisions, float tipLen, boolean isImageSpace, javax.vecmath.Point3f center, javax.media.j3d.Transform3D centerTransform)
      Tessellate a unit sphere centered at the origin.
      protected void reGenerateSphereMesh​(int iSubdivisions, javax.vecmath.Point3f center, javax.media.j3d.Transform3D centerTransform)
      Tessellate a unit sphere centered at the origin.
      protected void setMaskBurnVector​(java.util.Vector<MaskBurnAttribute> _vector)
      Initialize the mask burning vector.
      protected void setVolumeMask​(java.util.BitSet _volumeMask)
      Initial the volume mask from burnBase.
      void startBurn​(float tipLen, float time, int _index)
      Start burning.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • burnColor

        protected javax.vecmath.Color4f burnColor
        Burning point surface color.
      • burnIndex

        protected int burnIndex
        Current burning point index.
      • burningBG

        protected javax.media.j3d.BranchGroup[] burningBG
        Burning point branch group array, used to switch between different buring point.
      • burnRootParentBG

        protected javax.media.j3d.BranchGroup burnRootParentBG
        The root branch group the default burning point.
      • burnType

        protected int burnType
        Burning type.
      • diffVoxels

        protected int diffVoxels
        Volume difference in voxels for the tumor surface and burning sphere, ellipsoid packings.
      • m_afLength

        protected float[] m_afLength
        DOCUMENT ME!
      • m_aiConnect

        protected int[] m_aiConnect
        DOCUMENT ME!
      • m_aiImage

        protected int[] m_aiImage
        The 3D MRI image stored as a 1D array. The mapping from (x,y,z) to 1D is: index = x + xbound*(y + ybound*z).
      • m_aiMask

        protected java.util.BitSet m_aiMask
        DOCUMENT ME!
      • m_akVertex

        protected javax.vecmath.Point3f[] m_akVertex
        DOCUMENT ME!
      • m_fXDelta

        protected float m_fXDelta
        The size of a voxel, in voxel units.
      • m_fYDelta

        protected float m_fYDelta
        The size of a voxel, in voxel units.
      • m_fZDelta

        protected float m_fZDelta
        The size of a voxel, in voxel units.
      • m_iBackThreshold

        protected int m_iBackThreshold
        DOCUMENT ME!
      • m_iBrightThreshold

        protected int m_iBrightThreshold
        DOCUMENT ME!
      • m_iDMax

        protected int m_iDMax
        DOCUMENT ME!
      • m_iEQuantity

        protected int m_iEQuantity
        DOCUMENT ME!
      • m_iMaxThreshold

        protected int m_iMaxThreshold
        DOCUMENT ME!
      • m_iMedianIntensity

        protected int m_iMedianIntensity
        DOCUMENT ME!
      • m_iMinThreshold

        protected int m_iMinThreshold
        histogram parameters.
      • m_iTQuantity

        protected int m_iTQuantity
        DOCUMENT ME!
      • m_iVQuantity

        protected int m_iVQuantity
        mesh data.
      • m_iXBound

        protected int m_iXBound
        The MRI image bounds and quantity of voxels.
      • m_iYBound

        protected int m_iYBound
        The MRI image bounds and quantity of voxels.
      • m_iZBound

        protected int m_iZBound
        The MRI image bounds and quantity of voxels.
      • m_iQuantity

        protected int m_iQuantity
        The MRI image bounds and quantity of voxels.
      • m_kCenter

        protected javax.vecmath.Point3f m_kCenter
        DOCUMENT ME!
      • m_kEMap

        protected java.util.HashMap<BurnBaseView.Edge,​java.lang.Integer> m_kEMap
        DOCUMENT ME!
      • m_kRotate

        protected javax.vecmath.Matrix3f m_kRotate
        DOCUMENT ME!
      • maskBurnVector

        protected java.util.Vector<MaskBurnAttribute> maskBurnVector
        Reference to Mask burning attribute.
      • numBurn

        protected int numBurn
        Initialized the number of burning point.
      • pickCanvas

        protected com.sun.j3d.utils.picking.PickCanvas pickCanvas
        Agent to set the burning point sphere pickable.
      • probePanel

        protected JPanelProbe probePanel
        JPanelProbe reference.
      • radiusPt

        protected javax.vecmath.Point3f radiusPt
        Burning sphere radius, semiX, Y, Z in point format.
      • showLabels

        protected boolean showLabels
        Flag to show the burning point label.
      • sphereBG

        protected javax.media.j3d.BranchGroup[] sphereBG
        Default burning point array.
      • spheres

        protected com.sun.j3d.utils.geometry.Sphere spheres
        Burning point sphere.
      • surfaceRender

        protected SurfaceRender surfaceRender
        Surface Render reference.
      • textLabelBG

        protected javax.media.j3d.BranchGroup[] textLabelBG
        Burning point label array.
      • translate

        protected javax.vecmath.Vector3f translate
        Burning point center.
      • volumeMask

        protected java.util.BitSet volumeMask
        Reference to burning point voluem mask.
      • volumeSpaceRadius

        protected float volumeSpaceRadius
        Default volume space burning point radius.
      • ambientColor

        javax.vecmath.Color3f ambientColor
        Define attenuation lighting colors.
      • black

        javax.vecmath.Color3f black
        DOCUMENT ME!
      • blue

        javax.vecmath.Color3f blue
        DOCUMENT ME!
      • cyan

        javax.vecmath.Color3f cyan
        DOCUMENT ME!
      • diffuseColor

        javax.vecmath.Color3f diffuseColor
        DOCUMENT ME!
      • emissiveColor

        javax.vecmath.Color3f emissiveColor
        DOCUMENT ME!
      • green

        javax.vecmath.Color3f green
        DOCUMENT ME!
      • indexVector

        java.util.Vector<java.lang.Integer> indexVector
        vector stack to record the burning index.
      • orange

        javax.vecmath.Color3f orange
        DOCUMENT ME!
      • orangeColor

        javax.vecmath.Color4f orangeColor
        DOCUMENT ME!
      • pink

        javax.vecmath.Color3f pink
        DOCUMENT ME!
      • purple

        javax.vecmath.Color3f purple
        DOCUMENT ME!
      • purpleColor

        javax.vecmath.Color4f purpleColor
        DOCUMENT ME!
      • red

        javax.vecmath.Color3f red
        Define colors.
      • sepcualarColor

        javax.vecmath.Color3f sepcualarColor
        DOCUMENT ME!
      • silver

        javax.vecmath.Color3f silver
        DOCUMENT ME!
      • yellow

        javax.vecmath.Color3f yellow
        DOCUMENT ME!
      • m_akSurfaceShape

        private javax.media.j3d.Shape3D[] m_akSurfaceShape
        DOCUMENT ME!
      • nVoxels

        private int nVoxels
        factor above median at which edge values are taken to zero.
      • radius

        private float radius
        image space burning point radius.
    • Constructor Detail

      • BurnBaseView

        public BurnBaseView​(SurfaceRender _surfaceRender,
                            JPanelProbe _probePanel,
                            javax.media.j3d.BranchGroup _burnRootParentBG)
        Constructor. Setup the burning point related branch groups.
        Parameters:
        _surfaceRender - SurfaceRender refernece.
        _probePanel - JPanelProbe probe control panel reference.
        _burnRootParentBG - BranchGroup root of the burning point.
    • Method Detail

      • getRotAngle

        public static javax.vecmath.Vector3f getRotAngle​(javax.media.j3d.Transform3D t3D)
        DOCUMENT ME!
        Parameters:
        t3D - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • buildBurnSceneGraph

        public void buildBurnSceneGraph​(float radius,
                                        float time)
        Build the image scene graph structure.
        Parameters:
        radius - burning point sphere radius
        time - burning point burning time duration.
      • buildBurnSceneGraph

        public void buildBurnSceneGraph​(float radius,
                                        float time,
                                        javax.vecmath.Color3f color,
                                        int index)
        Only used by the default burning point type to reset the image sence graph when the burning sphere radius and time changes.
        Parameters:
        radius - burning sphere radius
        time - burning sphere duration time
        color - burning sphere color
        index - selected burning sphere index
      • calcTotalVolume

        public void calcTotalVolume​(SurfaceAttributes surface,
                                    TreatmentInformation treatment)
        Calculate the burning points total volume.
        Parameters:
        surface - SurfaceAttributes reference
        treatment - TreatmentInformation reference
      • dispose

        public void dispose()
        Dispose memory.
      • enableBurnLabels

        public void enableBurnLabels​(boolean flag)
        Attach or detach burn labels.
        Parameters:
        flag - whether to show the labels
      • findBurnPoint

        public int findBurnPoint​(javax.media.j3d.Shape3D pickedShape)
        Check whether the burning sphere is picked or not.
        Parameters:
        pickedShape - sphere burning shape.
        Returns:
        int burning point index
      • getBurnMask

        public java.util.BitSet getBurnMask()
        Get the burnning point ( sphere packing or ellipsoid packing ) mask.
        Returns:
        BitSet Burning point volume mask.
      • getColor

        public javax.vecmath.Color4f getColor()
        Get the buring point surface color.
        Returns:
        Color4f burning color.
      • getDiffVolume

        public final float getDiffVolume()
        Get the volume difference btw tumor surface and burning sphere packings.
        Returns:
        float differenct volume in mm space.
      • getRadius

        public javax.vecmath.Point3f getRadius()
        Get the radius( semiX, semiY, semiZ).
        Returns:
        Point3f radius
      • getSphereBG

        public javax.media.j3d.BranchGroup getSphereBG()
        Get the current burning point brach group.
        Returns:
        BranchGroup burning point branch group reference.
      • getTranslate

        public javax.vecmath.Vector3f getTranslate()
        Get the burning point center coordinates. Called by the probe control panel to show the current burning point center.
        Returns:
        Vector3f burning point center coordinate.
      • getVolume

        public final float getVolume()
        Get the total tumor voxels of the current treatment in mm^3.
        Returns:
        float tumor volume in mm space.
      • histogramAnalysis

        public void histogramAnalysis()
        Analyze the histogram of the 10-bit binned 3D MRI. The function computes a minimum threshold, a maximum threshold, and a background threshold that are used in the image term of the surface evolution. A brightness threshold is also computed that is used for determining the initial ellipsoid that approximates the brain surface.
      • startBurn

        public void startBurn​(float tipLen,
                              float time,
                              int _index)
        Start burning. Show the burning sphere and probing path.
        Parameters:
        tipLen - the length of the probe tip (cm)
        time - the time spent burning
        _index - index of the new burn
      • buildEntryPoint

        protected javax.media.j3d.BranchGroup buildEntryPoint()
        Build the entry point image scene graph structure.
        Returns:
        BranchGroup the entry point root branch group.
      • buildText

        protected void buildText​(int index,
                                 java.lang.String str,
                                 javax.vecmath.Vector3f pos)
        Attach some 3D text to a BranchGroup or TransformGroup.
        Parameters:
        index - the group to attach the text to
        str - the text to show
        pos - where to place the text
      • calcVoxels

        protected void calcVoxels()
        Identify all voxels that are inside or on the mesh that represents the brain surface. The surface voxels are constructed by rasterizing the triangles of the mesh in 3D. The centroid of these voxels is used as a seed point for a flood fill of the region enclosed by the surface.
      • createSurface

        protected javax.media.j3d.BranchGroup createSurface​(ModelTriangleMesh[] meshes,
                                                            javax.vecmath.Color4f color,
                                                            int mode)
        Creates a surface in the scene graph from an array of triangle meshes.
        Parameters:
        meshes - Triangle meshes that make up surface
        color - Color of surface
        mode - DOCUMENT ME!
        Returns:
        Parent node of surface.
      • estimateEllipsoid

        protected void estimateEllipsoid()
        Approximate the brain surface by an ellipsoid. The approximation is based on locating all voxels of intensity larger than a brightness threshold and that are part of the upper-half of the head. The idea is that the scalp voxels in the upper-half form lie approximately on an ellipsoidal surface.

        NOTE. The assumption is that the traversal from bottom to top of head is in the y-direction of the 3D image. It does not matter if the top of the head has y-values smaller/larger than those for the bottom of the head. If this assumption is not met, the image should be permuted OR this code must be modified to attempt to recognize the orientation of the head

      • floodFill

        protected void floodFill​(int iX,
                                 int iY,
                                 int iZ)
        Identify voxels enclosed by the brain surface by using a flood fill. The flood fill is nonrecursive to avoid overflowing the program stack.
        Parameters:
        iX - the x-value of the seed point for the fill
        iY - the y-value of the seed point for the fill
        iZ - the z-value of the seed point for the fill
      • generateEllipsoidMesh

        protected void generateEllipsoidMesh​(int burnType,
                                             float tipLen,
                                             int iSubdivisions,
                                             boolean isImageSpace)
        Tessellate a unit sphere centered at the origin. Start with an octahedron and subdivide. The final mesh is then affinely mapped to the initial ellipsoid produced by estimateEllipsoid(). The subdivision scheme is described in BrainExtraction.pdf.
        Parameters:
        burnType - the type of the burn
        tipLen - the length of the probe tip, in cm
        iSubdivisions - the number of levels to subdivide the ellipsoid
        isImageSpace - whether to get the mesh in image space
      • generateSphereMesh

        protected void generateSphereMesh​(int iSubdivisions,
                                          boolean isImageSpace)
        Tessellate a unit sphere centered at the origin. Start with an octahedron and subdivide. The final mesh is then affinely mapped to the initial ellipsoid produced by estimateEllipsoid(). The subdivision scheme is described in BrainExtraction.pdf.
        Parameters:
        iSubdivisions - the number of levels to subdivide the ellipsoid
        isImageSpace - DOCUMENT ME!
      • getIndex

        protected final int getIndex​(int iX,
                                     int iY,
                                     int iZ)
        A convenience function for mapping the 3D voxel position (iX,iY,iZ) to a 1D array index. The images are stored as 1D arrays, so this function is used frequently.
        Parameters:
        iX - the x-value of the voxel position
        iY - the y-value of the voxel position
        iZ - the z-value of the voxel position
        Returns:
        the 1D array index corresponding to (iX,iY,iZ)
      • getInsideVoxels

        protected void getInsideVoxels()
        Identify all voxels that are inside or on the mesh that represents the brain surface. The surface voxels are constructed by rasterizing the triangles of the mesh in 3D. The centroid of these voxels is used as a seed point for a flood fill of the region enclosed by the surface.
      • getIntersectX

        protected int getIntersectX​(javax.vecmath.Point3f kV0,
                                    javax.vecmath.Point3f kV1,
                                    javax.vecmath.Point3f kV2,
                                    int iY,
                                    int iZ)
        Compute the point of intersection between a line (0,iY,iZ)+t(1,0,0) and the triangle defined by the three input points. All calculations are in voxel coordinates and the x-value of the intersection point is truncated to an integer.
        Parameters:
        kV0 - a 3D vertex of the triangle
        kV1 - a 3D vertex of the triangle
        kV2 - a 3D vertex of the triangle
        iY - the y-value of the origin of the line
        iZ - the z-value of the origin of the line
        Returns:
        the x-value of the intersection
      • getIntersectY

        protected int getIntersectY​(javax.vecmath.Point3f kV0,
                                    javax.vecmath.Point3f kV1,
                                    javax.vecmath.Point3f kV2,
                                    int iX,
                                    int iZ)
        Compute the point of intersection between a line (iX,0,iZ)+t(0,1,0) and the triangle defined by the three input points. All calculations are in voxel coordinates and the y-value of the intersection point is truncated to an integer.
        Parameters:
        kV0 - a 3D vertex of the triangle
        kV1 - a 3D vertex of the triangle
        kV2 - a 3D vertex of the triangle
        iX - the x-value of the origin of the line
        iZ - the z-value of the origin of the line
        Returns:
        the y-value of the intersection
      • getIntersectZ

        protected int getIntersectZ​(javax.vecmath.Point3f kV0,
                                    javax.vecmath.Point3f kV1,
                                    javax.vecmath.Point3f kV2,
                                    int iX,
                                    int iY)
        Compute the point of intersection between a line (iX,iY,0)+t(0,0,1) and the triangle defined by the three input points. All calculations are in voxel coordinates and the z-value of the intersection point is truncated to an integer.
        Parameters:
        kV0 - a 3D vertex of the triangle
        kV1 - a 3D vertex of the triangle
        kV2 - a 3D vertex of the triangle
        iX - the x-value of the origin of the line
        iY - the y-value of the origin of the line
        Returns:
        the z-value of the intersection
      • getShape

        protected javax.media.j3d.Shape3D getShape​(javax.media.j3d.BranchGroup root)
        Get the shape burning point surface.
        Parameters:
        root - Burning point branchGroup
        Returns:
        Shape3D Shape object
      • markProbe

        protected javax.media.j3d.BranchGroup markProbe()
        Mark the probing guide line.
        Returns:
        BranchGroup return the guide line root reference.
      • reGenerateEllipsoidMesh

        protected void reGenerateEllipsoidMesh​(int iSubdivisions,
                                               float tipLen,
                                               boolean isImageSpace,
                                               javax.vecmath.Point3f center,
                                               javax.media.j3d.Transform3D centerTransform)
        Tessellate a unit sphere centered at the origin. Start with an octahedron and subdivide. The final mesh is then affinely mapped to the initial ellipsoid produced by estimateEllipsoid(). The subdivision scheme is described in BrainExtraction.pdf.
        Parameters:
        iSubdivisions - the number of levels to subdivide the ellipsoid
        tipLen - float the tip length
        isImageSpace - is image space, always true
        center - Point3f burning center point coordinate
        centerTransform - burning center transform
      • reGenerateSphereMesh

        protected void reGenerateSphereMesh​(int iSubdivisions,
                                            javax.vecmath.Point3f center,
                                            javax.media.j3d.Transform3D centerTransform)
        Tessellate a unit sphere centered at the origin. Start with an octahedron and subdivide. The final mesh is then affinely mapped to the initial ellipsoid produced by estimateEllipsoid(). The subdivision scheme is described in BrainExtraction.pdf.
        Parameters:
        iSubdivisions - the number of levels to subdivide the ellipsoid
        center - Point3f burning center point coordinate
        centerTransform - burning center transform
      • setMaskBurnVector

        protected void setMaskBurnVector​(java.util.Vector<MaskBurnAttribute> _vector)
        Initialize the mask burning vector.
        Parameters:
        _vector - MaskBurnVector reference.
      • setVolumeMask

        protected void setVolumeMask​(java.util.BitSet _volumeMask)
        Initial the volume mask from burnBase.
        Parameters:
        _volumeMask - byte[] array volume mask array.