maspack.geometry
Class ICPRegistration

java.lang.Object
  extended by maspack.geometry.ICPRegistration

public class ICPRegistration
extends java.lang.Object


Nested Class Summary
static class ICPRegistration.Prealign
           
 
Field Summary
static double myAdjustTime
           
static double myDistanceTime
           
static double myPCATime
           
static boolean myProfiling
           
 
Constructor Summary
ICPRegistration()
           
 
Method Summary
 void addAxisFlips(java.util.LinkedList<RotationMatrix3d> flips, RotationMatrix3d R, Vector3d axis, int n)
           
 RotationMatrix3d[] computeFlips(Vector3d sig)
           
 double computeInertia(Matrix3d J, Vector3d c, PolygonalMesh mesh)
           
static void computeOBBFromPCA(OBB obb, MeshBase mesh)
          Use PCA to determine the OBB for a mesh.
static double computePCA(Matrix3d J, Vector3d c, MeshBase mesh)
          Based on "Non-rigid Transformations for Musculoskeletal Model", by Petr Kellnhofer.
 boolean isDualDistancingEnabled()
           
 void registerICP(AffineTransform3d X, PolygonalMesh mesh1, PolygonalMesh mesh2, ICPRegistration.Prealign align, int[] npar)
           
 void registerICP(AffineTransform3d X, PolygonalMesh mesh1, PolygonalMesh mesh2, int... npar)
           
 void registerInertia(AffineTransform3d X, PolygonalMesh mesh1, PolygonalMesh mesh2)
           
 void registerPCA(AffineTransform3d X, PolygonalMesh mesh1, PolygonalMesh mesh2)
           
 void setDualDistancingEnabled(boolean enable)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

myProfiling

public static boolean myProfiling

myDistanceTime

public static double myDistanceTime

myAdjustTime

public static double myAdjustTime

myPCATime

public static double myPCATime
Constructor Detail

ICPRegistration

public ICPRegistration()
Method Detail

isDualDistancingEnabled

public boolean isDualDistancingEnabled()

setDualDistancingEnabled

public void setDualDistancingEnabled(boolean enable)

computePCA

public static double computePCA(Matrix3d J,
                                Vector3d c,
                                MeshBase mesh)
Based on "Non-rigid Transformations for Musculoskeletal Model", by Petr Kellnhofer.


registerPCA

public void registerPCA(AffineTransform3d X,
                        PolygonalMesh mesh1,
                        PolygonalMesh mesh2)

addAxisFlips

public void addAxisFlips(java.util.LinkedList<RotationMatrix3d> flips,
                         RotationMatrix3d R,
                         Vector3d axis,
                         int n)

computeFlips

public RotationMatrix3d[] computeFlips(Vector3d sig)

computeOBBFromPCA

public static void computeOBBFromPCA(OBB obb,
                                     MeshBase mesh)
Use PCA to determine the OBB for a mesh.


computeInertia

public double computeInertia(Matrix3d J,
                             Vector3d c,
                             PolygonalMesh mesh)

registerInertia

public void registerInertia(AffineTransform3d X,
                            PolygonalMesh mesh1,
                            PolygonalMesh mesh2)

registerICP

public void registerICP(AffineTransform3d X,
                        PolygonalMesh mesh1,
                        PolygonalMesh mesh2,
                        int... npar)

registerICP

public void registerICP(AffineTransform3d X,
                        PolygonalMesh mesh1,
                        PolygonalMesh mesh2,
                        ICPRegistration.Prealign align,
                        int[] npar)