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: 2007/04/29 16:30:20 $
00007   Version:   $Revision: 1.5 $
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 
00313 

Generated at Tue Jul 29 22:35:31 2008 for ITK by doxygen 1.5.1 written by Dimitri van Heesch, © 1997-2000