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: 2004/01/06 22:42:19 $
00007   Version:   $Revision: 1.1 $
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 reference
00030     //  is considered zero for each of the coordinates.  For example, 'RIP' means
00031     //  Right to Left varies fastest, then Inferior to Superior, and Posterior to
00032     //  Anterior varies the slowest.  
00033     typedef enum {
00034         ITK_COORDINATE_Right=2,
00035         ITK_COORDINATE_Left=3,
00036         ITK_COORDINATE_Posterior=4,    //back
00037         ITK_COORDINATE_Anterior=5,     //front
00038         ITK_COORDINATE_Inferior=8,     //below
00039         ITK_COORDINATE_Superior=9      //above
00040             // ITK_COORDINATE_Historical=16,
00041             // ITK_COORDINATE_Future=17
00042     } CoordinateTerms;
00043 
00044     typedef enum {
00045         // These code place values have to be far enough apart to separate the CoordinateTerms above.
00046         // However, if we added History/Future direction in time, we would need at least 5 bits per.
00047         ITK_COORDINATE_PrimaryMinor=0,
00048         ITK_COORDINATE_SecondaryMinor=8,
00049         ITK_COORDINATE_TertiaryMinor=16
00050             // Majorness is in terms of rank-minor because a 
00051             // fourth dimension, time, would be even More major than the PrimaryMajor==TertiaryMinor.
00052             // ITK_COORDINATE_QuaternaryMinor=24
00053     } CoordinateMajornessTerms;
00054     // Adding time IN GENERAL would make these 8 x 6 = 48 triples into 16 x 24 = 384 4-tuples.
00055     // A general fourth dimension would need a unique pair of letters to add to the code;
00056     // Maybe use H and F, from History to Future? Maybe use 48 x 2 with time ALWAYS highest 
00057     // order, or 48 x 2 x 2, with 3-space always highest or lowest order?  Multispectra might be 
00058     // co-registered and pieced together.... PD-T2 interleaving of slices is handled with choosing
00059     // which spectrum to load via the prototypical file name. 
00060     typedef enum {
00061         ITK_COORDINATE_ORIENTATION_RIP = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00062             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00063             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00064         ITK_COORDINATE_ORIENTATION_LIP = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00065             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00066             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00067         ITK_COORDINATE_ORIENTATION_RSP = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00068             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00069             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00070         ITK_COORDINATE_ORIENTATION_LSP = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00071             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00072             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00073         ITK_COORDINATE_ORIENTATION_RIA = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00074             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00075             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00076         ITK_COORDINATE_ORIENTATION_LIA = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00077             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00078             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00079         ITK_COORDINATE_ORIENTATION_RSA = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00080             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00081             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00082         ITK_COORDINATE_ORIENTATION_LSA = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00083             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00084             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00085 
00086         ITK_COORDINATE_ORIENTATION_IRP = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00087             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00088             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00089         ITK_COORDINATE_ORIENTATION_ILP = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00090             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00091             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00092         ITK_COORDINATE_ORIENTATION_SRP = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00093             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00094             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00095         ITK_COORDINATE_ORIENTATION_SLP = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00096             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00097             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00098         ITK_COORDINATE_ORIENTATION_IRA = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00099             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00100             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00101         ITK_COORDINATE_ORIENTATION_ILA = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00102             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00103             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00104         ITK_COORDINATE_ORIENTATION_SRA = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00105             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00106             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00107         ITK_COORDINATE_ORIENTATION_SLA = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00108             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00109             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00110 
00111         ITK_COORDINATE_ORIENTATION_RPI = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00112             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00113             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00114         ITK_COORDINATE_ORIENTATION_LPI = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00115             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00116             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00117         ITK_COORDINATE_ORIENTATION_RAI = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00118             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00119             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00120         ITK_COORDINATE_ORIENTATION_LAI = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00121             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00122             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00123         ITK_COORDINATE_ORIENTATION_RPS = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00124             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00125             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00126         ITK_COORDINATE_ORIENTATION_LPS = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00127             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00128             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00129         ITK_COORDINATE_ORIENTATION_RAS = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00130             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00131             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00132         ITK_COORDINATE_ORIENTATION_LAS = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00133             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00134             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00135 
00136         ITK_COORDINATE_ORIENTATION_PRI = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00137             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00138             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00139         ITK_COORDINATE_ORIENTATION_PLI = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00140             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00141             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00142         ITK_COORDINATE_ORIENTATION_ARI = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00143             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00144             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00145         ITK_COORDINATE_ORIENTATION_ALI = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00146             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00147             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00148         ITK_COORDINATE_ORIENTATION_PRS = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00149             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00150             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00151         ITK_COORDINATE_ORIENTATION_PLS = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00152             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00153             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00154         ITK_COORDINATE_ORIENTATION_ARS = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00155             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00156             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00157         ITK_COORDINATE_ORIENTATION_ALS = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00158             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00159             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00160 
00161         ITK_COORDINATE_ORIENTATION_IPR = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00162             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00163             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00164         ITK_COORDINATE_ORIENTATION_SPR = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00165             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00166             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00167         ITK_COORDINATE_ORIENTATION_IAR = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00168             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00169             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00170         ITK_COORDINATE_ORIENTATION_SAR = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00171             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00172             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00173         ITK_COORDINATE_ORIENTATION_IPL = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00174             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00175             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00176         ITK_COORDINATE_ORIENTATION_SPL = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00177             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00178             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00179         ITK_COORDINATE_ORIENTATION_IAL = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00180             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00181             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00182         ITK_COORDINATE_ORIENTATION_SAL = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00183             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00184             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00185 
00186         ITK_COORDINATE_ORIENTATION_PIR = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00187             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00188             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00189         ITK_COORDINATE_ORIENTATION_PSR = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00190             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00191             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00192         ITK_COORDINATE_ORIENTATION_AIR = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00193             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00194             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00195         ITK_COORDINATE_ORIENTATION_ASR = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00196             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00197             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00198         ITK_COORDINATE_ORIENTATION_PIL = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00199             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00200             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00201         ITK_COORDINATE_ORIENTATION_PSL = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00202             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00203             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00204         ITK_COORDINATE_ORIENTATION_AIL = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00205             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00206             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00207         ITK_COORDINATE_ORIENTATION_ASL = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00208             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00209             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor)
00210     } ValidCoordinateOrientationFlags;
00211 // ^^^
00212 // |||
00213 // ||\Sequential indexes are separated by (planes=rows*columns) memory locations
00214 // |\Sequential indexes are separated by rows memory locations (sweep out a plane)
00215 // \Sequential indexes are adjacent memory locations (sweep out a row)
00216 
00217 #ifndef __TEMPORARILY_INCLUDED_IN_COMPILAITONS__
00218   typedef enum {
00219     ITK_ORIGIN_IRP  =0,        
00220     ITK_ORIGIN_IRA  =1,        
00221     ITK_ORIGIN_ILP  =2,        
00222     ITK_ORIGIN_ILA  =3,        
00223     ITK_ORIGIN_SRP  =4,        
00224     ITK_ORIGIN_SRA  =5,        
00225     ITK_ORIGIN_SLP  =6,        
00226     ITK_ORIGIN_SLA  =7         
00227   } ValidOriginFlags;
00228 #endif
00229 
00230 } // end of namespace SpatialOrientation
00231 } // end namespace itk
00232 
00233 #endif
00234 

Generated at Wed Mar 30 00:11:55 2005 for ITK by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2000