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

Generated at Mon Mar 12 03:06:23 2007 for ITK by doxygen 1.5.1 written by Dimitri van Heesch, © 1997-2000