00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkSimplexMeshGeometry.h,v $ 00005 Language: C++ 00006 Date: $Date: 2006/04/01 13:44:21 $ 00007 Version: $Revision: 1.6 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef __itkSimplexMeshGeometry_h 00019 #define __itkSimplexMeshGeometry_h 00020 00021 #if defined(_MSC_VER) 00022 #pragma warning ( disable : 4786 ) 00023 #endif 00024 00025 #include "itkFixedArray.h" 00026 #include "itkPoint.h" 00027 #include "itkVector.h" 00028 #include "itkCovariantVector.h" 00029 #include <set> 00030 00031 namespace itk 00032 { 00033 00047 class ITKCommon_EXPORT SimplexMeshGeometry 00048 { 00049 00050 public: 00051 00052 typedef itk::Point<double,3> PointType; 00053 typedef itk::Vector<double,3> VectorType; 00054 typedef itk::CovariantVector<double,3> CovariantVectorType; 00055 typedef itk::FixedArray<unsigned long,3> IndexArray; 00056 typedef itk::FixedArray<PointType,3> PointArray; 00057 typedef std::set<unsigned long> NeighborSetType; 00058 00059 SimplexMeshGeometry(); 00060 ~SimplexMeshGeometry(); 00061 00062 00067 /* stores the indices of the three direct neighbors */ 00068 IndexArray neighborIndices; 00069 00070 /* stores the coordinates of the three direct neighbors */ 00071 PointArray neighbors; 00072 00073 /* stores the mean curvature of the mesh in the point */ 00074 double meanCurvature; 00075 00076 /* coordinates of the corresponding point */ 00077 PointType pos; 00078 00079 /* coordinates of the corresponding point in previous iteration */ 00080 PointType oldPos; 00081 00082 /* barycentric coordinates of corresponding point with respect 00083 * to its three direct neighbors 00084 */ 00085 PointType eps; 00086 00087 /* 00088 * reference metric params 00089 */ 00090 PointType referenceMetrics; 00091 00092 /* normal vector of corresponding point */ 00093 CovariantVectorType normal; 00094 00095 /* stores external force component for 00096 * current deformable model iteration 00097 */ 00098 VectorType externalForce; 00099 00100 /* stores internal force component for 00101 * current deformable model iteration 00102 */ 00103 VectorType internalForce; 00104 00105 /* 00106 * store the location of the closest attractor to this point 00107 */ 00108 PointType closestAttractor; 00109 00110 /* 00111 * stores the index of the closest attractor to this point 00112 */ 00113 unsigned long closestAttractorIndex; 00114 00115 /* stores circum circle radius */ 00116 double circleRadius; 00117 00118 /* stores circum circle center */ 00119 PointType circleCenter; 00120 00121 /* stores circum sphere radius */ 00122 double sphereRadius; 00123 00124 /* stores circum sphere center */ 00125 // PointType sphereCenter; 00126 00127 /* stores distance to foot point */ 00128 double distance; 00129 00130 /* stores angle */ 00131 double phi; 00132 00133 /* stores the neighbor set */ 00134 NeighborSetType* neighborSet; 00135 00136 /* stores multiplier for interactive deformable model filter */ 00137 double multiplier; 00138 00139 unsigned long forceIndex; 00140 00145 void ComputeGeometry(); 00146 00147 protected: 00148 00149 00150 };// end of class __itkSimplexMeshGeometry 00151 00152 } //end of namespace itk 00153 00154 00155 #endif 00156