ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
00001 /*========================================================================= 00002 * 00003 * Copyright Insight Software Consortium 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0.txt 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 * 00017 *=========================================================================*/ 00018 #ifndef __itkSimplexMeshGeometry_h 00019 #define __itkSimplexMeshGeometry_h 00020 00021 00022 #include "itkIntTypes.h" 00023 #include "itkPoint.h" 00024 #include "itkCovariantVector.h" 00025 #include <set> 00026 00027 namespace itk 00028 { 00043 class ITK_EXPORT SimplexMeshGeometry 00044 { 00045 public: 00046 00047 typedef itk::Point< double, 3 > PointType; 00048 typedef itk::Vector< double, 3 > VectorType; 00049 typedef itk::CovariantVector< double, 3 > CovariantVectorType; 00050 typedef itk::FixedArray< IdentifierType, 3 > IndexArray; 00051 typedef itk::FixedArray< PointType, 3 > PointArray; 00052 typedef std::set< IdentifierType > NeighborSetType; 00053 00054 SimplexMeshGeometry(); 00055 00056 ~SimplexMeshGeometry(); 00057 00058 void CopyFrom( const SimplexMeshGeometry & input ); 00059 00060 void CopyNeigborSet( const NeighborSetType * nset ); 00061 00066 /* stores the indices of the three direct neighbors */ 00067 IndexArray neighborIndices; 00068 00069 /* stores the coordinates of the three direct neighbors */ 00070 PointArray neighbors; 00071 00072 /* stores the mean curvature of the mesh in the point */ 00073 double meanCurvature; 00074 00075 /* coordinates of the corresponding point */ 00076 PointType pos; 00077 00078 /* coordinates of the corresponding point in previous iteration */ 00079 PointType oldPos; 00080 00084 PointType eps; 00085 00089 PointType referenceMetrics; 00090 00091 /* normal vector of corresponding point */ 00092 CovariantVectorType normal; 00093 00097 VectorType externalForce; 00098 00102 VectorType internalForce; 00103 00107 PointType closestAttractor; 00108 00112 IdentifierType closestAttractorIndex; 00113 00114 /* stores circum circle radius */ 00115 double circleRadius; 00116 00117 /* stores circum circle center */ 00118 PointType circleCenter; 00119 00120 /* stores circum sphere radius */ 00121 double sphereRadius; 00122 00123 /* stores circum sphere center */ 00124 // PointType sphereCenter; 00125 00126 /* stores distance to foot point */ 00127 double distance; 00128 00129 /* stores angle */ 00130 double phi; 00131 00132 /* stores the neighbor set */ 00133 NeighborSetType *neighborSet; 00134 00135 /* stores multiplier for interactive deformable model filter */ 00136 double multiplier; 00137 00138 IdentifierType forceIndex; 00139 00144 void ComputeGeometry(); 00145 00146 protected: 00147 }; // end of class __itkSimplexMeshGeometry 00148 } //end of namespace itk 00149 00150 #endif 00151