Class MjCorticalMesh


  • public class MjCorticalMesh
    extends java.lang.Object
    DOCUMENT ME!
    • Field Detail

      • m_afAvrConvexity

        private float[] m_afAvrConvexity
        DOCUMENT ME!
      • m_afMeanCurvature

        private float[] m_afMeanCurvature
        DOCUMENT ME!
      • m_aiConnect

        private int[] m_aiConnect
        DOCUMENT ME!
      • m_akColor

        private javax.vecmath.Color4f[] m_akColor
        DOCUMENT ME!
      • m_akCylinder

        private javax.vecmath.Point3f[] m_akCylinder
        projection of sphere onto cylinder.
      • m_akNormal

        private MjVector3f[] m_akNormal
        DOCUMENT ME!
      • m_akPlane

        private javax.vecmath.Point2f[] m_akPlane
        Conformal mapping to a plane. The (u,v) points correspond to the (x,y,z) mesh points.
      • m_akPoint

        private javax.vecmath.Point3f[] m_akPoint
        mesh attributes.
      • m_akSphere

        private javax.vecmath.Point3f[] m_akSphere
        Conformal mapping to a sphere. rho is the radius of the stereographic sphere.
      • m_fMaxAvrConvexity

        private float m_fMaxAvrConvexity
        DOCUMENT ME!
      • m_fMaxDistance

        private float m_fMaxDistance
        DOCUMENT ME!
      • m_fMaxMeanCurvature

        private float m_fMaxMeanCurvature
        DOCUMENT ME!
      • m_fMinAvrConvexity

        private float m_fMinAvrConvexity
        DOCUMENT ME!
      • m_fMinDistance

        private float m_fMinDistance
        DOCUMENT ME!
      • m_fMinMeanCurvature

        private float m_fMinMeanCurvature
        DOCUMENT ME!
      • m_fRho

        private float m_fRho
        DOCUMENT ME!
      • m_fSurfaceArea

        private float m_fSurfaceArea
        DOCUMENT ME!
      • m_iEQuantity

        private int m_iEQuantity
        DOCUMENT ME!
      • m_iPunctureTri

        private int m_iPunctureTri
        The index of the puncture triangle for computing the conformal mapping:.
      • m_iTQuantity

        private int m_iTQuantity
        DOCUMENT ME!
      • m_iVQuantity

        private int m_iVQuantity
        mesh topology.
      • m_kDistance

        private java.util.HashMap m_kDistance
        vertex-vertex distances measured along edge paths.
      • m_kInitDistance

        private java.util.HashMap m_kInitDistance
        surface inflation.
      • m_kPlaneMax

        private javax.vecmath.Point2f m_kPlaneMax
        DOCUMENT ME!
      • m_kPlaneMin

        private javax.vecmath.Point2f m_kPlaneMin
        DOCUMENT ME!
    • Constructor Detail

      • MjCorticalMesh

        public MjCorticalMesh​(int iVQuantity,
                              javax.vecmath.Point3f[] akPoint,
                              int iTQuantity,
                              int[] aiConnect)
        Creates a new MjCorticalMesh object.
        Parameters:
        iVQuantity - DOCUMENT ME!
        akPoint - DOCUMENT ME!
        iTQuantity - DOCUMENT ME!
        aiConnect - DOCUMENT ME!
    • Method Detail

      • computeConformalMapping

        public void computeConformalMapping()
        conformal mapping of mesh to plane and sphere, projection to cylinder.
      • computeDistances

        public void computeDistances​(int iSize)
        Computes the distances of vertex pairs for which an edge-path exists with at most iSize edges.
        Parameters:
        iSize - DOCUMENT ME!
      • computeMeanCurvature

        public void computeMeanCurvature()
        mean curvature.
      • computeNormals

        public void computeNormals()
        compute vertex normals as averages of triangle normals.
      • computeSurfaceArea

        public void computeSurfaceArea()
        surface area of the mesh (input mesh is closed, manifold).
      • disposeLocal

        public void disposeLocal()
        DOCUMENT ME!
      • doInflation

        public float doInflation​(int iOperation)
        surface inflation operation 0 = initialize 1 = inflate 2 = terminate.
        Parameters:
        iOperation - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getAvrConvexity

        public float[] getAvrConvexity()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getColorCopy

        public javax.vecmath.Color4f[] getColorCopy()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getColors

        public javax.vecmath.Color4f[] getColors()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getConnectivity

        public int[] getConnectivity()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getConnectivityCopy

        public int[] getConnectivityCopy()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getCylinderCoordinates

        public javax.vecmath.Point3f[] getCylinderCoordinates()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getDistance

        public float getDistance​(int iV0,
                                 int iV1)
        Vertex-vertex distance measured along the shortest edge-path connecting the two vertices.
        Parameters:
        iV0 - DOCUMENT ME!
        iV1 - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getDistanceMap

        public java.util.HashMap getDistanceMap()
        access to the distance map - stored in map from MjEdgeKey to Float.
        Returns:
        DOCUMENT ME!
      • getEQuantity

        public int getEQuantity()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getLatitude

        public MjCorticalMesh.Polylines getLatitude​(float fZNormal,
                                                    float fMBias,
                                                    float fSBias,
                                                    float fPBias)
        Produce polylines that are superimposed on the input cortical mesh, sphere, and plane. The znormal value indicates the z-slice on the unit sphere that is mapped to the polyline on the mesh. This value is in (-1,1). The angle value indicates the theta-slice on the unit sphere, theta measured as a positive angle counterclockwise from the x-axis towards the y-axis. This value is in [0,2*pi]. The bias value adds a small amount to the polyline to raise it above the mesh surface to avoid z-buffer fighting.
        Parameters:
        fZNormal - DOCUMENT ME!
        fMBias - DOCUMENT ME!
        fSBias - DOCUMENT ME!
        fPBias - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getLongitude

        public MjCorticalMesh.Polylines getLongitude​(float fAngle,
                                                     float fMBias,
                                                     float fSBias,
                                                     float fPBias)
        DOCUMENT ME!
        Parameters:
        fAngle - DOCUMENT ME!
        fMBias - DOCUMENT ME!
        fSBias - DOCUMENT ME!
        fPBias - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getMaxAvrConvexity

        public float getMaxAvrConvexity()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getMaxDistance

        public float getMaxDistance()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getMaxMeanCurvature

        public float getMaxMeanCurvature()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getMeanCurvature

        public float[] getMeanCurvature()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getMinAvrConvexity

        public float getMinAvrConvexity()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getMinDistance

        public float getMinDistance()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getMinMeanCurvature

        public float getMinMeanCurvature()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getNormalCopy

        public javax.vecmath.Vector3f[] getNormalCopy()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getNormals

        public MjVector3f[] getNormals()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getPlaneCoordinates

        public javax.vecmath.Point2f[] getPlaneCoordinates()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getPlaneMax

        public javax.vecmath.Point2f getPlaneMax()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getPlaneMin

        public javax.vecmath.Point2f getPlaneMin()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getPointCopy

        public javax.vecmath.Point3f[] getPointCopy()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getPoints

        public javax.vecmath.Point3f[] getPoints()
        attribute member access.
        Returns:
        DOCUMENT ME!
      • getSphereCoordinates

        public javax.vecmath.Point3f[] getSphereCoordinates()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getSurfaceArea

        public float getSurfaceArea()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getTQuantity

        public int getTQuantity()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getVQuantity

        public int getVQuantity()
        topology member access.
        Returns:
        DOCUMENT ME!
      • scaleToCube

        public float scaleToCube()
        uniformly scale points to [-1,1]^3, originally in [min,max]^3 returns 2D vector with (min,max) as the elements public Vector2f scaleToCube ().
        Returns:
        DOCUMENT ME!
      • setPunctureTriangle

        public void setPunctureTriangle​(int[] aiIndex)
        Set the index of the triangle used to "puncture" the mesh before the conformal mapping is computed. The triangle is found based on the three index values that describe the triangle:
        Parameters:
        aiIndex - DOCUMENT ME!
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        DOCUMENT ME!
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable - DOCUMENT ME!
      • contains

        private static boolean contains​(javax.vecmath.Point2f[] akVertex,
                                        javax.vecmath.Point2f kP)
        support for point-in-triangle tests; The akVertex array must have length 3.
        Parameters:
        akVertex - DOCUMENT ME!
        kP - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • computeDistance

        private void computeDistance​(int iSize,
                                     int iSource,
                                     boolean bInitiator)
        compute distances within specified neighborhood size (size >= 1).
        Parameters:
        iSize - DOCUMENT ME!
        iSource - DOCUMENT ME!
        bInitiator - DOCUMENT ME!
      • computeExtremes

        private void computeExtremes()
        DOCUMENT ME!
      • computeRadius

        private float computeRadius​(MjVector2f kV0,
                                    MjVector2f kV1,
                                    MjVector2f kV2,
                                    float fAreaFraction)
        DOCUMENT ME!
        Parameters:
        kV0 - DOCUMENT ME!
        kV1 - DOCUMENT ME!
        kV2 - DOCUMENT ME!
        fAreaFraction - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • doInflationStep

        private float doInflationStep()
        surface inflation.
        Returns:
        DOCUMENT ME!
      • getBarycentric

        private javax.vecmath.Point3f getBarycentric​(javax.vecmath.Point2f kP,
                                                     int i)
        Support for conformal mapping to planar triangle mesh. Once the containing triangle i is found, compute the barycentric coordinates of P relative to the triangle vertices V0, V1, and V2.
        Parameters:
        kP - DOCUMENT ME!
        i - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getContainingTriangle

        private int getContainingTriangle​(javax.vecmath.Point2f kP,
                                          int iStart)
        Support for conformal mapping to planar triangle mesh. Use a linear walk to locate a triangle containing P. The index of such a triangle is returned, unless there is no containing triangle in which case the return value is -1. The "start" index is the suggested starting triangle. When testing a lot of points that are ordered in some spatial manner, the chance that the triangle containing the previous test point will contain the next test point (or a neighbor might contain it). Taking advantage of spatial coherence should speed up the search in "batch mode".
        Parameters:
        kP - DOCUMENT ME!
        iStart - DOCUMENT ME!
        Returns:
        DOCUMENT ME!
      • getStereographicRadius

        private float getStereographicRadius()
        support for unfolding.
        Returns:
        DOCUMENT ME!