<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>ITK: itkVector.h Source File</title> <link href="DoxygenStyle.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Section customized for INSIGHT : Tue Jul 17 01:02:45 2001 --> <center> <a href="index.html" class="qindex">Main Page</a> <a href="modules.html" class="qindex">Groups</a> <a href="namespaces.html" class="qindex">Namespace List</a> <a href="hierarchy.html" class="qindex">Class Hierarchy</a> <a href="classes.html" class="qindex">Alphabetical List</a> <a href="annotated.html" class="qindex">Compound List</a> <a href="files.html" class="qindex">File List</a> <a href="namespacemembers.html" class="qindex">Namespace Members</a> <a href="functions.html" class="qindex">Compound Members</a> <a href="globals.html" class="qindex">File Members</a> <a href="pages.html" class="qindex">Concepts</a></center> <!-- Generated by Doxygen 1.5.9 --> <div class="navpath"><a class="el" href="dir_02e23d841c198393a6e961e9a0678fff.html">Code</a> » <a class="el" href="dir_ea7fc529ede9a38b0438cf13831ae873.html">Common</a> </div> <div class="contents"> <h1>itkVector.h</h1><a href="itkVector_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*=========================================================================</span> <a name="l00002"></a>00002 <span class="comment"></span> <a name="l00003"></a>00003 <span class="comment"> Program: Insight Segmentation & Registration Toolkit</span> <a name="l00004"></a>00004 <span class="comment"> Module: $RCSfile: itkVector.h,v $</span> <a name="l00005"></a>00005 <span class="comment"> Language: C++</span> <a name="l00006"></a>00006 <span class="comment"> Date: $Date: 2008-05-12 21:11:21 $</span> <a name="l00007"></a>00007 <span class="comment"> Version: $Revision: 1.82 $</span> <a name="l00008"></a>00008 <span class="comment"></span> <a name="l00009"></a>00009 <span class="comment"> Copyright (c) Insight Software Consortium. All rights reserved.</span> <a name="l00010"></a>00010 <span class="comment"> See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.</span> <a name="l00011"></a>00011 <span class="comment"></span> <a name="l00012"></a>00012 <span class="comment"> This software is distributed WITHOUT ANY WARRANTY; without even </span> <a name="l00013"></a>00013 <span class="comment"> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR </span> <a name="l00014"></a>00014 <span class="comment"> PURPOSE. See the above copyright notices for more information.</span> <a name="l00015"></a>00015 <span class="comment"></span> <a name="l00016"></a>00016 <span class="comment">=========================================================================*/</span> <a name="l00017"></a>00017 <span class="preprocessor">#ifndef __itkVector_h</span> <a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define __itkVector_h</span> <a name="l00019"></a>00019 <span class="preprocessor"></span> <a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="itkFixedArray_8h.html">itkFixedArray.h</a>"</span> <a name="l00021"></a>00021 <a name="l00022"></a>00022 <span class="preprocessor">#include "itkNumericTraits.h"</span> <span class="comment">// RealValueType type</span> <a name="l00023"></a>00023 <span class="preprocessor">#include <vnl/vnl_vector_ref.h></span> <span class="comment">// Get_vnl_vector method return</span> <a name="l00024"></a>00024 <a name="l00025"></a>00025 <a name="l00026"></a>00026 <span class="keyword">namespace </span>itk <a name="l00027"></a>00027 { <a name="l00028"></a>00028 <a name="l00057"></a>00057 <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> NVectorDimension=3> <a name="l00058"></a><a class="code" href="classitk_1_1Vector.html">00058</a> <span class="keyword">class </span><a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector</a> : <span class="keyword">public</span> <a class="code" href="classitk_1_1FixedArray.html" title="Simulate a standard C array with copy semnatics.">FixedArray</a><T,NVectorDimension> <a name="l00059"></a>00059 { <a name="l00060"></a>00060 <span class="keyword">public</span>: <a name="l00062"></a><a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">00062</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector</a> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a>; <a name="l00063"></a><a class="code" href="classitk_1_1Vector.html#586aab371935254fa24c1305c8ada2c3">00063</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1FixedArray.html">FixedArray<T,NVectorDimension></a> <a class="code" href="classitk_1_1FixedArray.html" title="Simulate a standard C array with copy semnatics.">Superclass</a>; <a name="l00064"></a>00064 <a name="l00067"></a><a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">00067</a> <span class="keyword">typedef</span> T <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a>; <a name="l00068"></a><a class="code" href="classitk_1_1Vector.html#4a31d837db4d82bc3cd607c94e472d05">00068</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> NumericTraits< ValueType >::RealType <a class="code" href="classitk_1_1Vector.html#4a31d837db4d82bc3cd607c94e472d05">RealValueType</a>; <a name="l00069"></a>00069 <a name="l00071"></a>00071 <a class="code" href="classitk_1_1Vector.html#62ea36f65e43ce733ee97c725415373d">itkStaticConstMacro</a>(Dimension, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>, NVectorDimension); <a name="l00072"></a>00072 <a name="l00074"></a><a class="code" href="classitk_1_1Vector.html#d60c9b495997e0c1286633daf2d48b96">00074</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">VectorType</a>; <a name="l00075"></a>00075 <a name="l00077"></a><a class="code" href="classitk_1_1Vector.html#569c7421c814600a0ed646c7e65eacbd">00077</a> <span class="keyword">typedef</span> T <a class="code" href="classitk_1_1Vector.html#569c7421c814600a0ed646c7e65eacbd">ComponentType</a>; <a name="l00078"></a>00078 <a name="l00080"></a><a class="code" href="classitk_1_1Vector.html#df87b2f910661dd9ceb6bb777406505a">00080</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1FixedArray.html">FixedArray<T, NVectorDimension></a> <a class="code" href="classitk_1_1FixedArray.html" title="Simulate a standard C array with copy semnatics.">BaseArray</a>; <a name="l00081"></a>00081 <a name="l00083"></a><a class="code" href="classitk_1_1Vector.html#44974cdf3362648a57cba351baf95ab6">00083</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classitk_1_1Vector.html#44974cdf3362648a57cba351baf95ab6">GetVectorDimension</a>() <a name="l00084"></a>00084 { <span class="keywordflow">return</span> NVectorDimension; } <a name="l00085"></a>00085 <a name="l00087"></a>00087 <span class="keywordtype">void</span> <a class="code" href="classitk_1_1Vector.html#736f6e6d4549f16fc2bbbf732b4eed97">SetVnlVector</a>( <span class="keyword">const</span> <a class="code" href="classvnl__vector.html">vnl_vector<T></a> & ); <a name="l00088"></a>00088 <a name="l00090"></a>00090 vnl_vector_ref<T> <a class="code" href="classitk_1_1Vector.html#b17c8a7a555074a8f23ec070982dd605">GetVnlVector</a>( <span class="keywordtype">void</span> ); <a name="l00091"></a>00091 <a name="l00093"></a>00093 <a class="code" href="classvnl__vector.html">vnl_vector<T></a> <a class="code" href="classitk_1_1Vector.html#b17c8a7a555074a8f23ec070982dd605">GetVnlVector</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span>; <a name="l00094"></a>00094 <a name="l00095"></a>00095 <a name="l00098"></a>00098 <span class="keywordtype">void</span> <a class="code" href="classitk_1_1Vector.html#81676686efa6f6abb245b2e586f34072">Set_vnl_vector</a>( <span class="keyword">const</span> <a class="code" href="classvnl__vector.html">vnl_vector<T></a> & ); <a name="l00099"></a>00099 <a name="l00102"></a>00102 vnl_vector_ref<T> <a class="code" href="classitk_1_1Vector.html#14f3c33f282e82bf91774ad529e5c922">Get_vnl_vector</a>( <span class="keywordtype">void</span> ); <a name="l00103"></a>00103 <a name="l00106"></a>00106 <a class="code" href="classvnl__vector.html">vnl_vector<T></a> <a class="code" href="classitk_1_1Vector.html#14f3c33f282e82bf91774ad529e5c922">Get_vnl_vector</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span>; <a name="l00107"></a>00107 <a name="l00109"></a><a class="code" href="classitk_1_1Vector.html#9edd67ea37eefae9cdce26ba8197986f">00109</a> <a class="code" href="classitk_1_1Vector.html#9edd67ea37eefae9cdce26ba8197986f">Vector</a>(): <a class="code" href="classitk_1_1FixedArray.html" title="Simulate a standard C array with copy semnatics.">BaseArray</a>() { } <a name="l00110"></a>00110 <a class="code" href="classitk_1_1Vector.html#9edd67ea37eefae9cdce26ba8197986f">Vector</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a>& r); <a name="l00111"></a>00111 <a name="l00113"></a>00113 <span class="keyword">template</span>< <span class="keyword">class</span> TVectorValueType > <a name="l00114"></a><a class="code" href="classitk_1_1Vector.html#a7de004689c627f2a681f3d4c8c2d619">00114</a> <a class="code" href="classitk_1_1Vector.html#a7de004689c627f2a681f3d4c8c2d619">Vector</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector< TVectorValueType, NVectorDimension></a>& r): <a class="code" href="classitk_1_1FixedArray.html" title="Simulate a standard C array with copy semnatics.">BaseArray</a>(r) {} <a name="l00115"></a><a class="code" href="classitk_1_1Vector.html#4a1b2c84432ad552e9b1b0694edc5e87">00115</a> <a class="code" href="classitk_1_1Vector.html#4a1b2c84432ad552e9b1b0694edc5e87">Vector</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a> r[Dimension]): <a class="code" href="classitk_1_1FixedArray.html" title="Simulate a standard C array with copy semnatics.">BaseArray</a>(r) {} <a name="l00117"></a>00117 <a name="l00119"></a>00119 <span class="keyword">template</span>< <span class="keyword">class</span> TVectorValueType > <a name="l00120"></a><a class="code" href="classitk_1_1Vector.html#7c8358c277c1e6db12827e675dde5fac">00120</a> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector</a>& <a class="code" href="classitk_1_1Vector.html#7c8358c277c1e6db12827e675dde5fac">operator= </a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector< TVectorValueType, NVectorDimension></a> & r) <a name="l00121"></a>00121 { <a name="l00122"></a>00122 <a class="code" href="classitk_1_1FixedArray.html#d16ed6955993844c65a5cf404c6e32d9">BaseArray::operator=</a>(r); <a name="l00123"></a>00123 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00124"></a>00124 } <a name="l00126"></a>00126 <a name="l00127"></a>00127 <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector</a>& <a class="code" href="classitk_1_1Vector.html#7c8358c277c1e6db12827e675dde5fac">operator= </a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a> r[NVectorDimension]); <a name="l00128"></a>00128 <a name="l00130"></a><a class="code" href="classitk_1_1Vector.html#6bd1f27f9700c861e6cff86ac17049b6">00130</a> <span class="keyword">template</span>< <span class="keyword">class</span> Tt > <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a>& <a class="code" href="classitk_1_1Vector.html#6bd1f27f9700c861e6cff86ac17049b6">operator*=</a>(<span class="keyword">const</span> Tt &value) <a name="l00131"></a>00131 { <a name="l00132"></a>00132 <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<NVectorDimension; i++) <a name="l00133"></a>00133 { <a name="l00134"></a>00134 (*this)[i] = <span class="keyword">static_cast<</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a> <span class="keyword">></span>((*this)[i] * value); <a name="l00135"></a>00135 } <a name="l00136"></a>00136 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00137"></a>00137 } <a name="l00139"></a>00139 <a name="l00141"></a><a class="code" href="classitk_1_1Vector.html#e32b9ba0d2fbf2bee1a9b36469820815">00141</a> <span class="keyword">template</span>< <span class="keyword">class</span> Tt > <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a>& <a class="code" href="classitk_1_1Vector.html#e32b9ba0d2fbf2bee1a9b36469820815">operator/=</a>(<span class="keyword">const</span> Tt &value) <a name="l00142"></a>00142 { <a name="l00143"></a>00143 <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<NVectorDimension; i++) <a name="l00144"></a>00144 { <a name="l00145"></a>00145 (*this)[i] = <span class="keyword">static_cast<</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a> <span class="keyword">></span>((*this)[i] / value); <a name="l00146"></a>00146 } <a name="l00147"></a>00147 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00148"></a>00148 } <a name="l00150"></a>00150 <a name="l00152"></a>00152 <span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a>& <a class="code" href="classitk_1_1Vector.html#926552fc9e23c350b972b9a55e9d2f0d">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> &vec); <a name="l00153"></a>00153 <a name="l00155"></a>00155 <span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a>& <a class="code" href="classitk_1_1Vector.html#3bc8899675b678aac2285715b39a54d6">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> &vec); <a name="l00156"></a>00156 <a name="l00159"></a>00159 <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> <a class="code" href="classitk_1_1Vector.html#fbdc40fbc7cc222261ffa9418fd443d4">operator-</a>() <span class="keyword">const</span>; <a name="l00160"></a>00160 <a name="l00162"></a>00162 <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> <a class="code" href="classitk_1_1Vector.html#1e86ef661ed48b5a688250d34bcfe10f">operator+</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> &vec) <span class="keyword">const</span>; <a name="l00163"></a>00163 <a name="l00165"></a>00165 <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> <a class="code" href="classitk_1_1Vector.html#fbdc40fbc7cc222261ffa9418fd443d4">operator-</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> &vec) <span class="keyword">const</span>; <a name="l00166"></a>00166 <a name="l00169"></a>00169 <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a> <a class="code" href="classitk_1_1Vector.html#51bad5a3835ffc0fbbc02d5437f7e691">operator*</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#5c57e85364330075748dd2c629966d43">Self</a> &vec) <span class="keyword">const</span>; <a name="l00170"></a>00170 <a name="l00173"></a><a class="code" href="classitk_1_1Vector.html#bc6ce860d5adcb03bbfd129c1ba2c409">00173</a> <span class="keyword">inline</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a> <a class="code" href="classitk_1_1Vector.html#51bad5a3835ffc0fbbc02d5437f7e691">operator*</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a>& value)<span class="keyword"> const</span> <a name="l00174"></a>00174 <span class="keyword"> </span>{ <a name="l00175"></a>00175 <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a> result; <a name="l00176"></a>00176 <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<NVectorDimension; i++) <a name="l00177"></a>00177 { <a name="l00178"></a>00178 result[i] = <span class="keyword">static_cast<</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a> <span class="keyword">></span>((*this)[i] * value); <a name="l00179"></a>00179 } <a name="l00180"></a>00180 <span class="keywordflow">return</span> result; <a name="l00181"></a>00181 } <a name="l00183"></a>00183 <a name="l00186"></a><a class="code" href="classitk_1_1Vector.html#a5b026284e36f952b9b6c7996946d99d">00186</a> <span class="keyword">template</span>< <span class="keyword">class</span> Tt > <span class="keyword">inline</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a> <a class="code" href="classitk_1_1Vector.html#a5b026284e36f952b9b6c7996946d99d">operator/</a>(<span class="keyword">const</span> Tt& value)<span class="keyword"> const</span> <a name="l00187"></a>00187 <span class="keyword"> </span>{ <a name="l00188"></a>00188 <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a> result; <a name="l00189"></a>00189 <span class="keywordflow">for</span>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<NVectorDimension; i++) <a name="l00190"></a>00190 { <a name="l00191"></a>00191 result[i] = <span class="keyword">static_cast<</span> <a class="code" href="classitk_1_1Vector.html#1048e34a366d73fd16db005b8b25bf12">ValueType</a> <span class="keyword">></span>((*this)[i] / value); <a name="l00192"></a>00192 } <a name="l00193"></a>00193 <span class="keywordflow">return</span> result; <a name="l00194"></a>00194 } <a name="l00196"></a>00196 <a name="l00201"></a><a class="code" href="classitk_1_1Vector.html#aad054c8f9daeacc0e4a9e1ac41b1f6c">00201</a> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1Vector.html#aad054c8f9daeacc0e4a9e1ac41b1f6c">operator==</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a>& v)<span class="keyword"> const</span> <a name="l00202"></a>00202 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classitk_1_1FixedArray.html#c00b25f8a41da2d065f9f154d2ddc400">Superclass::operator==</a>(v); } <a name="l00203"></a><a class="code" href="classitk_1_1Vector.html#250bb3d6ffaaa4f76aa493161da34638">00203</a> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1Vector.html#250bb3d6ffaaa4f76aa493161da34638">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Self</a>& v)<span class="keyword"> const</span> <a name="l00204"></a>00204 <span class="keyword"> </span>{ <span class="keywordflow">return</span> !<a class="code" href="classitk_1_1Vector.html#aad054c8f9daeacc0e4a9e1ac41b1f6c">operator==</a>(v); } <a name="l00206"></a>00206 <a name="l00208"></a>00208 <a class="code" href="classitk_1_1Vector.html#4a31d837db4d82bc3cd607c94e472d05">RealValueType</a> <a class="code" href="classitk_1_1Vector.html#0f103636ffc85fd3df1ae6c838d3e70e">GetNorm</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span>; <a name="l00209"></a>00209 <a name="l00211"></a>00211 <a class="code" href="classitk_1_1Vector.html#4a31d837db4d82bc3cd607c94e472d05">RealValueType</a> <a class="code" href="classitk_1_1Vector.html#7456ed4f2f3d0c6f1d8c73120dd69abc">GetSquaredNorm</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span>; <a name="l00212"></a>00212 <a name="l00214"></a><a class="code" href="classitk_1_1Vector.html#dac8a73b6789f76176c58ca67e1d9a94">00214</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classitk_1_1Vector.html#dac8a73b6789f76176c58ca67e1d9a94">GetNumberOfComponents</a>(){ <span class="keywordflow">return</span> NVectorDimension;} <a name="l00215"></a>00215 <a name="l00217"></a>00217 <span class="keywordtype">void</span> <a class="code" href="classitk_1_1Vector.html#7e9abf11fcebea563f91fc0703f7339c">Normalize</a>(<span class="keywordtype">void</span>); <a name="l00218"></a>00218 <a name="l00219"></a><a class="code" href="classitk_1_1Vector.html#628d20b7eb446e3612d8c426f57095bc">00219</a> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1Vector.html#628d20b7eb446e3612d8c426f57095bc">SetNthComponent</a>(<span class="keywordtype">int</span> c, <span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html#569c7421c814600a0ed646c7e65eacbd">ComponentType</a>& v) <a name="l00220"></a>00220 { this-><a class="code" href="classitk_1_1FixedArray.html#6266788e1529e419e5028c15780d53de">operator[]</a>(c) = v; } <a name="l00221"></a>00221 <a name="l00224"></a>00224 <span class="keyword">template</span> < <span class="keyword">typename</span> TCoordRepB > <a name="l00225"></a><a class="code" href="classitk_1_1Vector.html#39ac43f32755381894812aff1abbfd8d">00225</a> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1Vector.html#39ac43f32755381894812aff1abbfd8d">CastFrom</a>( <span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector<TCoordRepB,NVectorDimension></a> & pa ) <a name="l00226"></a>00226 { <a name="l00227"></a>00227 <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<NVectorDimension; i++ ) <a name="l00228"></a>00228 { <a name="l00229"></a>00229 (*this)[i] = <span class="keyword">static_cast<</span>T<span class="keyword">></span>( pa[i] ); <a name="l00230"></a>00230 } <a name="l00231"></a>00231 } <a name="l00233"></a>00233 <a name="l00234"></a>00234 }; <a name="l00235"></a>00235 <a name="l00238"></a>00238 <span class="keyword">template</span>< <span class="keyword">class</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> NVectorDimension > <a name="l00239"></a>00239 <span class="keyword">inline</span> <a name="l00240"></a>00240 Vector<T,NVectorDimension> <a name="l00241"></a><a class="code" href="namespaceitk.html#eca1ba1b57590d14dd37efff87c95eb5">00241</a> <a class="code" href="namespaceitk.html#f78c6e7736d8f1eb0a9924605a33cded">operator*</a>(<span class="keyword">const</span> T &scalar, <span class="keyword">const</span> <a class="code" href="classitk_1_1Vector.html" title="A templated class holding a n-Dimensional vector.">Vector<T,NVectorDimension></a> & v) <a name="l00242"></a>00242 { <a name="l00243"></a>00243 <span class="keywordflow">return</span> v * scalar; <a name="l00244"></a>00244 } <a name="l00245"></a>00245 <a name="l00246"></a>00246 <span class="keyword">template</span>< <span class="keyword">class</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> NVectorDimension > <a name="l00247"></a>00247 std::ostream& <a class="code" href="namespaceitk.html#1a9c40969bca6a50e9d688a35d3c4984">operator<<</a>(std::ostream& os, <a name="l00248"></a>00248 <span class="keyword">const</span> Vector<T,NVectorDimension> & v); <a name="l00249"></a>00249 <a name="l00250"></a>00250 <span class="keyword">template</span>< <span class="keyword">class</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> NVectorDimension > <a name="l00251"></a>00251 std::istream& <a class="code" href="namespaceitk.html#687a81e337cd6bd3a5de73c2e31e6d84">operator>></a>(std::istream& is, <a name="l00252"></a>00252 Vector<T,NVectorDimension> & v); <a name="l00253"></a>00253 <a name="l00254"></a>00254 <a class="code" href="itkWin32Header_8h.html#faefe352c9fb4179f5a770afc70ea90f">ITKCommon_EXPORT</a> Vector<double,3> <a class="code" href="namespaceitk.html#84705e26daae45fb95382fe1dc953c6e">CrossProduct</a>( <span class="keyword">const</span> Vector<double,3> &, <a name="l00255"></a>00255 <span class="keyword">const</span> Vector<double,3> & ); <a name="l00256"></a>00256 <a name="l00257"></a>00257 <a class="code" href="itkWin32Header_8h.html#faefe352c9fb4179f5a770afc70ea90f">ITKCommon_EXPORT</a> Vector<float,3> <a class="code" href="namespaceitk.html#84705e26daae45fb95382fe1dc953c6e">CrossProduct</a>( <span class="keyword">const</span> Vector<float,3> &, <a name="l00258"></a>00258 <span class="keyword">const</span> Vector<float,3> & ); <a name="l00259"></a>00259 <a name="l00260"></a>00260 <a class="code" href="itkWin32Header_8h.html#faefe352c9fb4179f5a770afc70ea90f">ITKCommon_EXPORT</a> Vector<int,3> <a class="code" href="namespaceitk.html#84705e26daae45fb95382fe1dc953c6e">CrossProduct</a>( <span class="keyword">const</span> Vector<int,3> &, <a name="l00261"></a>00261 <span class="keyword">const</span> Vector<int,3> & ); <a name="l00262"></a>00262 <a name="l00263"></a>00263 } <span class="comment">// end namespace itk</span> <a name="l00264"></a>00264 <a name="l00265"></a>00265 <a name="l00266"></a>00266 <span class="comment">// Define instantiation macro for this template.</span> <a name="l00267"></a><a class="code" href="itkVector_8h.html#ea63b81ed6c87f05f3f9c55fcd7bbbcf">00267</a> <span class="preprocessor">#define ITK_TEMPLATE_Vector(_, EXPORT, x, y) namespace itk { \</span> <a name="l00268"></a>00268 <span class="preprocessor"> _(2(class EXPORT Vector< ITK_TEMPLATE_2 x >)) \</span> <a name="l00269"></a>00269 <span class="preprocessor"> _(1(EXPORT std::ostream& operator<<(std::ostream&, \</span> <a name="l00270"></a>00270 <span class="preprocessor"> const Vector< ITK_TEMPLATE_2 x >&))) \</span> <a name="l00271"></a>00271 <span class="preprocessor"> _(1(EXPORT std::istream& operator>>(std::istream&, \</span> <a name="l00272"></a>00272 <span class="preprocessor"> Vector< ITK_TEMPLATE_2 x >&))) \</span> <a name="l00273"></a>00273 <span class="preprocessor"> namespace Templates { typedef Vector< ITK_TEMPLATE_2 x > Vector##y; } \</span> <a name="l00274"></a>00274 <span class="preprocessor"> }</span> <a name="l00275"></a>00275 <span class="preprocessor"></span> <a name="l00276"></a>00276 <span class="preprocessor">#if ITK_TEMPLATE_EXPLICIT</span> <a name="l00277"></a>00277 <span class="preprocessor"></span><span class="preprocessor"># include "Templates/itkVector+-.h"</span> <a name="l00278"></a>00278 <span class="preprocessor">#endif</span> <a name="l00279"></a>00279 <span class="preprocessor"></span> <a name="l00280"></a>00280 <span class="comment">//</span> <a name="l00281"></a>00281 <span class="comment">// Numeric traits must be included after (optionally) including the explicit</span> <a name="l00282"></a>00282 <span class="comment">// instantiations control of this class, in case the implicit instantiation</span> <a name="l00283"></a>00283 <span class="comment">// needs to be disabled. </span> <a name="l00284"></a>00284 <span class="comment">//</span> <a name="l00285"></a>00285 <span class="comment">// NumericTraits must be included before (optionally) including the .txx file,</span> <a name="l00286"></a>00286 <span class="comment">// in case the .txx requires to use NumericTraits.</span> <a name="l00287"></a>00287 <span class="comment">//</span> <a name="l00288"></a>00288 <span class="preprocessor">#include "itkNumericTraitsVectorPixel.h"</span> <a name="l00289"></a>00289 <a name="l00290"></a>00290 <span class="preprocessor">#if ITK_TEMPLATE_TXX</span> <a name="l00291"></a>00291 <span class="preprocessor"></span><span class="preprocessor"># include "itkVector.txx"</span> <a name="l00292"></a>00292 <span class="preprocessor">#endif</span> <a name="l00293"></a>00293 <span class="preprocessor"></span> <a name="l00294"></a>00294 <a name="l00295"></a>00295 <span class="preprocessor">#endif</span> <a name="l00296"></a>00296 <span class="preprocessor"></span> </pre></div></div> <hr><address><small> Generated at Fri May 8 00:27:06 2009 for ITK by <a href="http://www.stack.nl/~dimitri/doxygen/index.html"> <img src="http://www.stack.nl/~dimitri/doxygen/doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53> </a> 1.5.9 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, © 1997-2000</small></address> </body> </html>