Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkSpatialOrientation.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Insight Segmentation & Registration Toolkit
00004   Module:    $RCSfile: itkSpatialOrientation.h,v $
00005   Language:  C++
00006   Date:      $Date: 2009-03-03 15:09:33 $
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   Portions of this code are covered under the VTK copyright.
00013   See VTKCopyright.txt or http://www.kitware.com/VTKCopyright.htm for details.
00014 
00015      This software is distributed WITHOUT ANY WARRANTY; without even 
00016      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00017      PURPOSE.  See the above copyright notices for more information.
00018 
00019 =========================================================================*/
00020 #ifndef __itkSpatialOrientation_h
00021 #define __itkSpatialOrientation_h
00022 
00023 namespace itk
00024 {
00025 namespace SpatialOrientation
00026 {
00027 //  Coordinate orientation codes have a place-value organization such that 
00028 //  an ImageDimension-al sequence of subcodes says both which varies fastest
00029 //  through which varies slowest, but also which end of the frame of 
00030 //  reference
00031 //  is considered zero for each of the coordinates.  For example, 'RIP' 
00032 //  means
00033 //  Right to Left varies fastest, then Inferior to Superior, and Posterior 
00034 //  to
00035 //  Anterior varies the slowest.  
00036 typedef enum {
00037   ITK_COORDINATE_UNKNOWN=0,
00038   ITK_COORDINATE_Right=2,
00039   ITK_COORDINATE_Left=3,
00040   ITK_COORDINATE_Posterior=4,    //back
00041   ITK_COORDINATE_Anterior=5,     //front
00042   ITK_COORDINATE_Inferior=8,     //below
00043   ITK_COORDINATE_Superior=9      //above
00044   // ITK_COORDINATE_Historical=16,
00045   // ITK_COORDINATE_Future=17
00046 } CoordinateTerms;
00047 
00048 typedef enum {
00049   // These code place values have to be far enough apart to 
00050   // separate the CoordinateTerms above.
00051   // However, if we added History/Future direction in time, 
00052   // we would need at least 5 bits per.
00053   ITK_COORDINATE_PrimaryMinor=0,
00054   ITK_COORDINATE_SecondaryMinor=8,
00055   ITK_COORDINATE_TertiaryMinor=16
00056   // Majorness is in terms of rank-minor because a 
00057   // fourth dimension, time, would be even More major than the 
00058   // PrimaryMajor==TertiaryMinor.
00059   // ITK_COORDINATE_QuaternaryMinor=24
00060 } CoordinateMajornessTerms;
00061 // Adding time IN GENERAL would make these 8 x 6 = 48 triples into 16 
00062 // x 24 = 384 4-tuples.
00063 // A general fourth dimension would need a unique pair of letters to 
00064 // add to the code;
00065 // Maybe use H and F, from History to Future? Maybe use 48 x 2 with 
00066 // time ALWAYS highest 
00067 // order, or 48 x 2 x 2, with 3-space always highest or lowest order?  
00068 // Multispectra might be 
00069 // co-registered and pieced together.... PD-T2 interleaving of 
00070 // slices is handled with choosing
00071 // which spectrum to load via the prototypical file name. 
00072 typedef enum {
00073   ITK_COORDINATE_ORIENTATION_INVALID=ITK_COORDINATE_UNKNOWN,
00074   ITK_COORDINATE_ORIENTATION_RIP = (ITK_COORDINATE_Right
00075                                     << ITK_COORDINATE_PrimaryMinor) 
00076   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00077   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00078   ITK_COORDINATE_ORIENTATION_LIP = (ITK_COORDINATE_Left
00079                                     << ITK_COORDINATE_PrimaryMinor) 
00080   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00081   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00082   ITK_COORDINATE_ORIENTATION_RSP = (ITK_COORDINATE_Right
00083                                     << ITK_COORDINATE_PrimaryMinor)
00084   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00085   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00086   ITK_COORDINATE_ORIENTATION_LSP = (ITK_COORDINATE_Left
00087                                     << ITK_COORDINATE_PrimaryMinor)
00088   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00089   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00090   ITK_COORDINATE_ORIENTATION_RIA = (ITK_COORDINATE_Right
00091                                     << ITK_COORDINATE_PrimaryMinor)
00092   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor)
00093   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00094   ITK_COORDINATE_ORIENTATION_LIA = (ITK_COORDINATE_Left
00095                                     << ITK_COORDINATE_PrimaryMinor)
00096   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor)
00097   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00098   ITK_COORDINATE_ORIENTATION_RSA = (ITK_COORDINATE_Right
00099                                     << ITK_COORDINATE_PrimaryMinor)
00100   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00101   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00102   ITK_COORDINATE_ORIENTATION_LSA = (ITK_COORDINATE_Left
00103                                     << ITK_COORDINATE_PrimaryMinor)
00104   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00105   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00106   
00107   ITK_COORDINATE_ORIENTATION_IRP = (ITK_COORDINATE_Inferior
00108                                     << ITK_COORDINATE_PrimaryMinor)
00109   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00110   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00111   ITK_COORDINATE_ORIENTATION_ILP = (ITK_COORDINATE_Inferior
00112                                     << ITK_COORDINATE_PrimaryMinor)
00113   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00114   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00115   ITK_COORDINATE_ORIENTATION_SRP = (ITK_COORDINATE_Superior
00116                                     << ITK_COORDINATE_PrimaryMinor)
00117   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00118   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00119   ITK_COORDINATE_ORIENTATION_SLP = (ITK_COORDINATE_Superior
00120                                     << ITK_COORDINATE_PrimaryMinor)
00121   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00122   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00123   ITK_COORDINATE_ORIENTATION_IRA = (ITK_COORDINATE_Inferior
00124                                     << ITK_COORDINATE_PrimaryMinor)
00125   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00126   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00127   ITK_COORDINATE_ORIENTATION_ILA = (ITK_COORDINATE_Inferior
00128                                     << ITK_COORDINATE_PrimaryMinor)
00129   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00130   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00131   ITK_COORDINATE_ORIENTATION_SRA = (ITK_COORDINATE_Superior
00132                                     << ITK_COORDINATE_PrimaryMinor)
00133   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00134   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00135   ITK_COORDINATE_ORIENTATION_SLA = (ITK_COORDINATE_Superior
00136                                     << ITK_COORDINATE_PrimaryMinor)
00137   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00138   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00139 
00140   ITK_COORDINATE_ORIENTATION_RPI = (ITK_COORDINATE_Right
00141                                     << ITK_COORDINATE_PrimaryMinor)
00142   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00143   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00144   ITK_COORDINATE_ORIENTATION_LPI = (ITK_COORDINATE_Left
00145                                     << ITK_COORDINATE_PrimaryMinor)
00146   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00147   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00148   ITK_COORDINATE_ORIENTATION_RAI = (ITK_COORDINATE_Right
00149                                     << ITK_COORDINATE_PrimaryMinor)
00150   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00151   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00152   ITK_COORDINATE_ORIENTATION_LAI = (ITK_COORDINATE_Left
00153                                     << ITK_COORDINATE_PrimaryMinor)
00154   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00155   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00156   ITK_COORDINATE_ORIENTATION_RPS = (ITK_COORDINATE_Right
00157                                     << ITK_COORDINATE_PrimaryMinor)
00158   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00159   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00160   ITK_COORDINATE_ORIENTATION_LPS = (ITK_COORDINATE_Left
00161                                     << ITK_COORDINATE_PrimaryMinor)
00162   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00163   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00164   ITK_COORDINATE_ORIENTATION_RAS = (ITK_COORDINATE_Right
00165                                     << ITK_COORDINATE_PrimaryMinor)
00166   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00167   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00168   ITK_COORDINATE_ORIENTATION_LAS = (ITK_COORDINATE_Left
00169                                     << ITK_COORDINATE_PrimaryMinor)
00170   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00171   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00172 
00173   ITK_COORDINATE_ORIENTATION_PRI = (ITK_COORDINATE_Posterior
00174                                     << ITK_COORDINATE_PrimaryMinor)
00175   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00176   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00177   ITK_COORDINATE_ORIENTATION_PLI = (ITK_COORDINATE_Posterior
00178                                     << ITK_COORDINATE_PrimaryMinor)
00179   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00180   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00181   ITK_COORDINATE_ORIENTATION_ARI = (ITK_COORDINATE_Anterior
00182                                     << ITK_COORDINATE_PrimaryMinor)
00183   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00184   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00185   ITK_COORDINATE_ORIENTATION_ALI = (ITK_COORDINATE_Anterior
00186                                     << ITK_COORDINATE_PrimaryMinor)
00187   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00188   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00189   ITK_COORDINATE_ORIENTATION_PRS = (ITK_COORDINATE_Posterior
00190                                     << ITK_COORDINATE_PrimaryMinor)
00191   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00192   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00193   ITK_COORDINATE_ORIENTATION_PLS = (ITK_COORDINATE_Posterior
00194                                     << ITK_COORDINATE_PrimaryMinor)
00195   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00196   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00197   ITK_COORDINATE_ORIENTATION_ARS = (ITK_COORDINATE_Anterior
00198                                     << ITK_COORDINATE_PrimaryMinor)
00199   + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor)
00200   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00201   ITK_COORDINATE_ORIENTATION_ALS = (ITK_COORDINATE_Anterior
00202                                     << ITK_COORDINATE_PrimaryMinor)
00203   + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor)
00204   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00205 
00206   ITK_COORDINATE_ORIENTATION_IPR = (ITK_COORDINATE_Inferior
00207                                     << ITK_COORDINATE_PrimaryMinor)
00208   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00209   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00210   ITK_COORDINATE_ORIENTATION_SPR = (ITK_COORDINATE_Superior
00211                                     << ITK_COORDINATE_PrimaryMinor)
00212   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00213   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00214   ITK_COORDINATE_ORIENTATION_IAR = (ITK_COORDINATE_Inferior
00215                                     << ITK_COORDINATE_PrimaryMinor)
00216   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00217   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00218   ITK_COORDINATE_ORIENTATION_SAR = (ITK_COORDINATE_Superior
00219                                     << ITK_COORDINATE_PrimaryMinor)
00220   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00221   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00222   ITK_COORDINATE_ORIENTATION_IPL = (ITK_COORDINATE_Inferior
00223                                     << ITK_COORDINATE_PrimaryMinor)
00224   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00225   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00226   ITK_COORDINATE_ORIENTATION_SPL = (ITK_COORDINATE_Superior
00227                                     << ITK_COORDINATE_PrimaryMinor)
00228   + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor)
00229   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00230   ITK_COORDINATE_ORIENTATION_IAL = (ITK_COORDINATE_Inferior
00231                                     << ITK_COORDINATE_PrimaryMinor)
00232   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00233   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00234   ITK_COORDINATE_ORIENTATION_SAL = (ITK_COORDINATE_Superior
00235                                     << ITK_COORDINATE_PrimaryMinor)
00236   + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor)
00237   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00238 
00239   ITK_COORDINATE_ORIENTATION_PIR = (ITK_COORDINATE_Posterior
00240                                     << ITK_COORDINATE_PrimaryMinor)
00241   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor)
00242   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00243   ITK_COORDINATE_ORIENTATION_PSR = (ITK_COORDINATE_Posterior
00244                                     << ITK_COORDINATE_PrimaryMinor)
00245   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00246   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00247   ITK_COORDINATE_ORIENTATION_AIR = (ITK_COORDINATE_Anterior
00248                                     << ITK_COORDINATE_PrimaryMinor)
00249   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor)
00250   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00251   ITK_COORDINATE_ORIENTATION_ASR = (ITK_COORDINATE_Anterior
00252                                     << ITK_COORDINATE_PrimaryMinor)
00253   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00254   + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00255   ITK_COORDINATE_ORIENTATION_PIL = (ITK_COORDINATE_Posterior
00256                                     << ITK_COORDINATE_PrimaryMinor)
00257   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor)
00258   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00259   ITK_COORDINATE_ORIENTATION_PSL = (ITK_COORDINATE_Posterior
00260                                     << ITK_COORDINATE_PrimaryMinor)
00261   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00262   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00263   ITK_COORDINATE_ORIENTATION_AIL = (ITK_COORDINATE_Anterior
00264                                     << ITK_COORDINATE_PrimaryMinor)
00265   + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor)
00266   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00267   ITK_COORDINATE_ORIENTATION_ASL = (ITK_COORDINATE_Anterior
00268                                     << ITK_COORDINATE_PrimaryMinor)
00269   + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor)
00270   + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor)
00271 } ValidCoordinateOrientationFlags;
00272 // ^^^
00273 // |||
00274 // ||\Sequential indexes are separated by (planes=rows*columns) memory
00275 // locations
00276 // |\Sequential indexes are separated by rows memory locations (sweep out
00277 // a plane)
00278 // \Sequential indexes are adjacent memory locations (sweep out a row)
00279 
00280 #ifndef __TEMPORARILY_INCLUDED_IN_COMPILATIONS__
00281 typedef enum {
00283   /* is Inferior Right Posterior */
00284 
00286   /* is Inferior Right Anterior */
00287 
00289   /* is Inferior Left Posterior */
00290 
00292   /* is Inferior Left Anterior */
00293 
00295   /* is Superior Right Posterior */
00296 
00298   /* is Superior Right Anterior */
00299 
00301   /* is Superior Left Posterior */
00302 
00304   /* is Superior Left Anterior */
00305 } ValidOriginFlags;
00306 #endif
00307 
00308 } // end of namespace SpatialOrientation
00309 } // end namespace itk
00310 
00311 #endif
00312 

Generated at Fri Apr 16 19:44:28 2010 for ITK by doxygen 1.6.1 written by Dimitri van Heesch, © 1997-2000