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: 2005/09/07 18:41:37 $
00007   Version:   $Revision: 1.3 $
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_RIP = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00063             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00064             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00065         ITK_COORDINATE_ORIENTATION_LIP = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00066             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00067             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00068         ITK_COORDINATE_ORIENTATION_RSP = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00069             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00070             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00071         ITK_COORDINATE_ORIENTATION_LSP = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00072             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00073             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00074         ITK_COORDINATE_ORIENTATION_RIA = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00075             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00076             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00077         ITK_COORDINATE_ORIENTATION_LIA = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00078             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00079             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00080         ITK_COORDINATE_ORIENTATION_RSA = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00081             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00082             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00083         ITK_COORDINATE_ORIENTATION_LSA = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00084             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00085             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00086 
00087         ITK_COORDINATE_ORIENTATION_IRP = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00088             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00089             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00090         ITK_COORDINATE_ORIENTATION_ILP = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00091             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00092             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00093         ITK_COORDINATE_ORIENTATION_SRP = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00094             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00095             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00096         ITK_COORDINATE_ORIENTATION_SLP = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00097             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00098             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_TertiaryMinor),
00099         ITK_COORDINATE_ORIENTATION_IRA = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00100             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00101             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00102         ITK_COORDINATE_ORIENTATION_ILA = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00103             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00104             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00105         ITK_COORDINATE_ORIENTATION_SRA = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00106             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00107             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00108         ITK_COORDINATE_ORIENTATION_SLA = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00109             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00110             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_TertiaryMinor),
00111 
00112         ITK_COORDINATE_ORIENTATION_RPI = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00113             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00114             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00115         ITK_COORDINATE_ORIENTATION_LPI = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00116             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00117             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00118         ITK_COORDINATE_ORIENTATION_RAI = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00119             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00120             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00121         ITK_COORDINATE_ORIENTATION_LAI = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00122             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00123             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00124         ITK_COORDINATE_ORIENTATION_RPS = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00125             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00126             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00127         ITK_COORDINATE_ORIENTATION_LPS = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00128             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00129             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00130         ITK_COORDINATE_ORIENTATION_RAS = (ITK_COORDINATE_Right     << ITK_COORDINATE_PrimaryMinor) 
00131             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00132             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00133         ITK_COORDINATE_ORIENTATION_LAS = (ITK_COORDINATE_Left      << ITK_COORDINATE_PrimaryMinor) 
00134             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00135             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00136 
00137         ITK_COORDINATE_ORIENTATION_PRI = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00138             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00139             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00140         ITK_COORDINATE_ORIENTATION_PLI = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00141             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00142             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00143         ITK_COORDINATE_ORIENTATION_ARI = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00144             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00145             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00146         ITK_COORDINATE_ORIENTATION_ALI = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00147             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00148             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_TertiaryMinor),
00149         ITK_COORDINATE_ORIENTATION_PRS = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00150             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00151             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00152         ITK_COORDINATE_ORIENTATION_PLS = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00153             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00154             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00155         ITK_COORDINATE_ORIENTATION_ARS = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00156             + (ITK_COORDINATE_Right     << ITK_COORDINATE_SecondaryMinor) 
00157             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00158         ITK_COORDINATE_ORIENTATION_ALS = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00159             + (ITK_COORDINATE_Left      << ITK_COORDINATE_SecondaryMinor) 
00160             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_TertiaryMinor),
00161 
00162         ITK_COORDINATE_ORIENTATION_IPR = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00163             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00164             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00165         ITK_COORDINATE_ORIENTATION_SPR = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00166             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00167             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00168         ITK_COORDINATE_ORIENTATION_IAR = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00169             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00170             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00171         ITK_COORDINATE_ORIENTATION_SAR = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00172             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00173             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00174         ITK_COORDINATE_ORIENTATION_IPL = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00175             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00176             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00177         ITK_COORDINATE_ORIENTATION_SPL = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00178             + (ITK_COORDINATE_Posterior << ITK_COORDINATE_SecondaryMinor) 
00179             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00180         ITK_COORDINATE_ORIENTATION_IAL = (ITK_COORDINATE_Inferior  << ITK_COORDINATE_PrimaryMinor) 
00181             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00182             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00183         ITK_COORDINATE_ORIENTATION_SAL = (ITK_COORDINATE_Superior  << ITK_COORDINATE_PrimaryMinor) 
00184             + (ITK_COORDINATE_Anterior  << ITK_COORDINATE_SecondaryMinor) 
00185             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00186 
00187         ITK_COORDINATE_ORIENTATION_PIR = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00188             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00189             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00190         ITK_COORDINATE_ORIENTATION_PSR = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00191             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00192             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00193         ITK_COORDINATE_ORIENTATION_AIR = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00194             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00195             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00196         ITK_COORDINATE_ORIENTATION_ASR = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00197             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00198             + (ITK_COORDINATE_Right     << ITK_COORDINATE_TertiaryMinor),
00199         ITK_COORDINATE_ORIENTATION_PIL = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00200             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00201             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00202         ITK_COORDINATE_ORIENTATION_PSL = (ITK_COORDINATE_Posterior << ITK_COORDINATE_PrimaryMinor) 
00203             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00204             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00205         ITK_COORDINATE_ORIENTATION_AIL = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00206             + (ITK_COORDINATE_Inferior  << ITK_COORDINATE_SecondaryMinor) 
00207             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor),
00208         ITK_COORDINATE_ORIENTATION_ASL = (ITK_COORDINATE_Anterior  << ITK_COORDINATE_PrimaryMinor) 
00209             + (ITK_COORDINATE_Superior  << ITK_COORDINATE_SecondaryMinor) 
00210             + (ITK_COORDINATE_Left      << ITK_COORDINATE_TertiaryMinor)
00211     } ValidCoordinateOrientationFlags;
00212 // ^^^
00213 // |||
00214 // ||\Sequential indexes are separated by (planes=rows*columns) memory locations
00215 // |\Sequential indexes are separated by rows memory locations (sweep out a plane)
00216 // \Sequential indexes are adjacent memory locations (sweep out a row)
00217 
00218 #ifndef __TEMPORARILY_INCLUDED_IN_COMPILATIONS__
00219   typedef enum {
00220     ITK_ORIGIN_IRP  =0,        
00221     ITK_ORIGIN_IRA  =1,        
00222     ITK_ORIGIN_ILP  =2,        
00223     ITK_ORIGIN_ILA  =3,        
00224     ITK_ORIGIN_SRP  =4,        
00225     ITK_ORIGIN_SRA  =5,        
00226     ITK_ORIGIN_SLP  =6,        
00227     ITK_ORIGIN_SLA  =7         
00228   } ValidOriginFlags;
00229 #endif
00230 
00231 } // end of namespace SpatialOrientation
00232 } // end namespace itk
00233 
00234 #endif
00235 

Generated at Thu May 25 00:06:13 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000