Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 4027

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crystal Space 1.2.1: csgeom/vector3.h Source File (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="classes.html"><span>Classes</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<h1>csgeom/vector3.h</h1><a href="vector3_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">    Copyright (C) 1998,1999,2000 by Jorrit Tyberghein</span>
<a name="l00003"></a>00003 <span class="comment">    Largely rewritten by Ivan Avramovic &lt;ivan@avramovic.com&gt;</span>
<a name="l00004"></a>00004 <span class="comment"></span>
<a name="l00005"></a>00005 <span class="comment">    This library is free software; you can redistribute it and/or</span>
<a name="l00006"></a>00006 <span class="comment">    modify it under the terms of the GNU Library General Public</span>
<a name="l00007"></a>00007 <span class="comment">    License as published by the Free Software Foundation; either</span>
<a name="l00008"></a>00008 <span class="comment">    version 2 of the License, or (at your option) any later version.</span>
<a name="l00009"></a>00009 <span class="comment"></span>
<a name="l00010"></a>00010 <span class="comment">    This library is distributed in the hope that it will be useful,</span>
<a name="l00011"></a>00011 <span class="comment">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00012"></a>00012 <span class="comment">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00013"></a>00013 <span class="comment">    Library General Public License for more details.</span>
<a name="l00014"></a>00014 <span class="comment"></span>
<a name="l00015"></a>00015 <span class="comment">    You should have received a copy of the GNU Library General Public</span>
<a name="l00016"></a>00016 <span class="comment">    License along with this library; if not, write to the Free</span>
<a name="l00017"></a>00017 <span class="comment">    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</span>
<a name="l00018"></a>00018 <span class="comment">*/</span>
<a name="l00019"></a>00019 
<a name="l00020"></a>00020 <span class="preprocessor">#ifndef __CS_VECTOR3_H__</span>
<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define __CS_VECTOR3_H__</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span>
<a name="l00030"></a>00030 <span class="preprocessor">#include "csextern.h"</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="math3d__d_8h.html" title="3D mathematic utility functions (double precision variants).">math3d_d.h</a>"</span>
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 <span class="keyword">class </span><a class="code" href="classcsString.html" title="Thin wrapper around csStringFast&amp;lt;&amp;gt; with its default buffer size.">csString</a>;
<a name="l00034"></a>00034 
<a name="l00039"></a>00039 <span class="keyword">enum</span>
<a name="l00040"></a>00040 {
<a name="l00042"></a><a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e40982bccad8e3789fcecb889116579b71ea">00042</a>   <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e40982bccad8e3789fcecb889116579b71ea" title="Invalid axis.">CS_AXIS_NONE</a> = -1,
<a name="l00044"></a><a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4098e81da4ab0c7c07c39847d17fb3a95b5">00044</a>   <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4098e81da4ab0c7c07c39847d17fb3a95b5" title="X axis.">CS_AXIS_X</a> = 0,
<a name="l00046"></a><a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4099734b1073fe8f5572622f5e39120317d">00046</a>   <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4099734b1073fe8f5572622f5e39120317d" title="Y axis.">CS_AXIS_Y</a> = 1,
<a name="l00048"></a><a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4092524f76ec772151941164bee31d5d9f1">00048</a>   <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4092524f76ec772151941164bee31d5d9f1" title="Z axis.">CS_AXIS_Z</a> = 2,
<a name="l00050"></a><a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e409b090525794378a5a8ee78c5ad7e220b4">00050</a>   <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e409b090525794378a5a8ee78c5ad7e220b4" title="W axis.">CS_AXIS_W</a> = 3
<a name="l00051"></a>00051 };
<a name="l00052"></a>00052 
<a name="l00056"></a><a class="code" href="classcsVector3.html">00056</a> <span class="keyword">class </span>CS_CRYSTALSPACE_EXPORT <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>
<a name="l00057"></a>00057 {
<a name="l00058"></a>00058 <span class="keyword">public</span>:
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 <span class="preprocessor">#if !defined(__STRICT_ANSI__) &amp;&amp; !defined(SWIG)</span>
<a name="l00061"></a>00061 <span class="preprocessor"></span>  <span class="keyword">union</span>
<a name="l00062"></a>00062   {
<a name="l00063"></a>00063     <span class="keyword">struct </span>
<a name="l00064"></a>00064     {
<a name="l00065"></a>00065 <span class="preprocessor">#endif</span>
<a name="l00067"></a><a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f">00067</a> <span class="preprocessor">      float x;</span>
<a name="l00069"></a><a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719">00069</a> <span class="preprocessor">      float y;</span>
<a name="l00071"></a><a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05">00071</a> <span class="preprocessor">      float z;</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span><span class="preprocessor">#if !defined(__STRICT_ANSI__) &amp;&amp; !defined(SWIG)</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span>    };
<a name="l00075"></a><a class="code" href="classcsVector3.html#fc081d3bf73f1be6f7134c29f6f61c56">00075</a>     <span class="keywordtype">float</span> m[3];
<a name="l00076"></a>00076   };
<a name="l00077"></a>00077 <span class="preprocessor">#endif</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span>
<a name="l00084"></a><a class="code" href="classcsVector3.html#27d80c7e6bcdaee093012aa843492ca6">00084</a>   <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> () {}
<a name="l00085"></a>00085 
<a name="l00091"></a><a class="code" href="classcsVector3.html#0267a154da795520aa74c4861ab36d77">00091</a>   <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (<span class="keywordtype">float</span> m) : x(m), y(m), z(m) {}
<a name="l00092"></a>00092 
<a name="l00094"></a><a class="code" href="classcsVector3.html#5c187c254a4d44d364670ff9e57b59a5">00094</a>   <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (<span class="keywordtype">float</span> ix, <span class="keywordtype">float</span> iy, <span class="keywordtype">float</span> iz = 0) : x(ix), y(iy), z(iz) {}
<a name="l00095"></a>00095 
<a name="l00097"></a><a class="code" href="classcsVector3.html#83e55d80b89992b33983461997aaf3f0">00097</a>   <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v) : x(v.x), y(v.y), z(v.z) {}
<a name="l00098"></a>00098 
<a name="l00100"></a>00100   <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (<span class="keyword">const</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>&amp;);
<a name="l00101"></a>00101 
<a name="l00103"></a>00103   <a class="code" href="classcsString.html" title="Thin wrapper around csStringFast&amp;lt;&amp;gt; with its default buffer size.">csString</a> Description() <span class="keyword">const</span>;
<a name="l00104"></a>00104 
<a name="l00106"></a><a class="code" href="classcsVector3.html#4bfd7dd1c1e68ab46a03552cd5fb872a">00106</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#4152cd06665dffa1b7bded50af1bbe34" title="Add two colors.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00107"></a>00107   { <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>(v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>+v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>, v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>+v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>, v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>+v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>); }
<a name="l00108"></a>00108 
<a name="l00110"></a><a class="code" href="classcsVector3.html#bfcfd1f73524f02155dca14377deffc1">00110</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a> <a class="code" href="cscolor_8h.html#4152cd06665dffa1b7bded50af1bbe34" title="Add two colors.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00111"></a>00111   { <span class="keywordflow">return</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>(v1.<a class="code" href="classcsDVector3.html#6f67e661779797eab4cf2e638b513c9c" title="The X component of the vector.">x</a>+v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>, v1.<a class="code" href="classcsDVector3.html#4aa6a7a4ee8ba5a031f8123585b269ee" title="The Y component of the vector.">y</a>+v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>, v1.<a class="code" href="classcsDVector3.html#878df30b2dab8c5de8f3f442b5d6890e" title="The Z component of the vector.">z</a>+v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>); }
<a name="l00112"></a>00112 
<a name="l00114"></a><a class="code" href="classcsVector3.html#d3d5d09f8b3aaa3cecd6dffa5fc57722">00114</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a> <a class="code" href="cscolor_8h.html#4152cd06665dffa1b7bded50af1bbe34" title="Add two colors.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>&amp; v2)
<a name="l00115"></a>00115   { <span class="keywordflow">return</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>(v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>+v2.<a class="code" href="classcsDVector3.html#6f67e661779797eab4cf2e638b513c9c" title="The X component of the vector.">x</a>, v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>+v2.<a class="code" href="classcsDVector3.html#4aa6a7a4ee8ba5a031f8123585b269ee" title="The Y component of the vector.">y</a>, v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>+v2.<a class="code" href="classcsDVector3.html#878df30b2dab8c5de8f3f442b5d6890e" title="The Z component of the vector.">z</a>); }
<a name="l00116"></a>00116 
<a name="l00118"></a><a class="code" href="classcsVector3.html#8044d79b2baa48f677d88d4aea15e475">00118</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#55e738db674cbea902cb06597df8dacf" title="Subtract two colors.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00119"></a>00119   { <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>(v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>-v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>, v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>-v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>, v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>-v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>); }
<a name="l00120"></a>00120 
<a name="l00122"></a><a class="code" href="classcsVector3.html#707f5ce11cda15e4e0e22777f6f91031">00122</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a> <a class="code" href="cscolor_8h.html#55e738db674cbea902cb06597df8dacf" title="Subtract two colors.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>&amp; v2)
<a name="l00123"></a>00123   { <span class="keywordflow">return</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>(v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>-v2.<a class="code" href="classcsDVector3.html#6f67e661779797eab4cf2e638b513c9c" title="The X component of the vector.">x</a>, v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>-v2.<a class="code" href="classcsDVector3.html#4aa6a7a4ee8ba5a031f8123585b269ee" title="The Y component of the vector.">y</a>, v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>-v2.<a class="code" href="classcsDVector3.html#878df30b2dab8c5de8f3f442b5d6890e" title="The Z component of the vector.">z</a>); }
<a name="l00124"></a>00124 
<a name="l00126"></a><a class="code" href="classcsVector3.html#072ff90ee99b3048ab5020803a0d0ff7">00126</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a> <a class="code" href="cscolor_8h.html#55e738db674cbea902cb06597df8dacf" title="Subtract two colors.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00127"></a>00127   { <span class="keywordflow">return</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>(v1.<a class="code" href="classcsDVector3.html#6f67e661779797eab4cf2e638b513c9c" title="The X component of the vector.">x</a>-v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>, v1.<a class="code" href="classcsDVector3.html#4aa6a7a4ee8ba5a031f8123585b269ee" title="The Y component of the vector.">y</a>-v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>, v1.<a class="code" href="classcsDVector3.html#878df30b2dab8c5de8f3f442b5d6890e" title="The Z component of the vector.">z</a>-v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>); }
<a name="l00128"></a>00128 
<a name="l00130"></a><a class="code" href="classcsVector3.html#7485c6fc880165de9edc87d8d4f8c6f7">00130</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <span class="keywordtype">float</span> <a class="code" href="cscolor_8h.html#c99c344a2408f1e1928b247db5d64365" title="Multiply two colors.">operator*</a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00131"></a>00131   { <span class="keywordflow">return</span> v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a> + v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a> + v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>; }
<a name="l00132"></a>00132 
<a name="l00134"></a><a class="code" href="classcsVector3.html#9cf0725e53867457381292b60987f4c0">00134</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> operator%(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00135"></a>00135   {
<a name="l00136"></a>00136     <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>-v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>,
<a name="l00137"></a>00137                       v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>-v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>,
<a name="l00138"></a>00138                       v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>-v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>);
<a name="l00139"></a>00139   }
<a name="l00140"></a>00140 
<a name="l00142"></a><a class="code" href="classcsVector3.html#6da3afcc16d51f5cbb122786530abfc8">00142</a>   <span class="keywordtype">void</span> Cross (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> &amp; px, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> &amp; py)
<a name="l00143"></a>00143   {
<a name="l00144"></a>00144     x = px.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*py.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a> - px.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*py.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>;
<a name="l00145"></a>00145     y = px.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*py.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a> - px.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*py.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>;
<a name="l00146"></a>00146     z = px.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*py.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a> - px.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*py.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>;
<a name="l00147"></a>00147   }
<a name="l00148"></a>00148 
<a name="l00150"></a><a class="code" href="classcsVector3.html#1a8272b06eec8e8453ee1b080d34468e">00150</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#c99c344a2408f1e1928b247db5d64365" title="Multiply two colors.">operator* </a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">float</span> f)
<a name="l00151"></a>00151   { <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>(v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*f, v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*f, v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*f); }
<a name="l00152"></a>00152 
<a name="l00154"></a><a class="code" href="classcsVector3.html#fdf18d676633debc32fa1aeb97097062">00154</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#c99c344a2408f1e1928b247db5d64365" title="Multiply two colors.">operator* </a>(<span class="keywordtype">float</span> f, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v)
<a name="l00155"></a>00155   { <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>(v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*f, v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*f, v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*f); }
<a name="l00156"></a>00156 
<a name="l00158"></a><a class="code" href="classcsVector3.html#268b01115d9117ce0ae4b638f3145361">00158</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a> <a class="code" href="cscolor_8h.html#c99c344a2408f1e1928b247db5d64365" title="Multiply two colors.">operator* </a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">double</span> f)
<a name="l00159"></a>00159   { <span class="keywordflow">return</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>(v) * f; }
<a name="l00160"></a>00160 
<a name="l00162"></a><a class="code" href="classcsVector3.html#adddaaa4a319d692e1bbb52b159f7b83">00162</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a> <a class="code" href="cscolor_8h.html#c99c344a2408f1e1928b247db5d64365" title="Multiply two colors.">operator* </a>(<span class="keywordtype">double</span> f, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v)
<a name="l00163"></a>00163   { <span class="keywordflow">return</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>(v) * f; }
<a name="l00164"></a>00164 
<a name="l00166"></a><a class="code" href="classcsVector3.html#7c43330932d0d179d72dd8cf5fdfde79">00166</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#c99c344a2408f1e1928b247db5d64365" title="Multiply two colors.">operator* </a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">int</span> f)
<a name="l00167"></a>00167   { <span class="keywordflow">return</span> v * (float)f; }
<a name="l00168"></a>00168 
<a name="l00170"></a><a class="code" href="classcsVector3.html#5c1f360feb8a569b066d3c251ea53ffb">00170</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#c99c344a2408f1e1928b247db5d64365" title="Multiply two colors.">operator* </a>(<span class="keywordtype">int</span> f, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v)
<a name="l00171"></a>00171   { <span class="keywordflow">return</span> v * (float)f; }
<a name="l00172"></a>00172 
<a name="l00174"></a><a class="code" href="classcsVector3.html#052b2559d5d577132492d1213bac4ce0">00174</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#a9b4d9b2f7603a763b65c580bf00eaad" title="Divide a color by a scalar.">operator/ </a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">float</span> f)
<a name="l00175"></a>00175   { f = 1.0f/f; <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>(v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>*f, v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>*f, v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>*f); }
<a name="l00176"></a>00176 
<a name="l00178"></a><a class="code" href="classcsVector3.html#4bd0d559e4e019ccead8a36e6f6b13b1">00178</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a> <a class="code" href="cscolor_8h.html#a9b4d9b2f7603a763b65c580bf00eaad" title="Divide a color by a scalar.">operator/ </a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">double</span> f)
<a name="l00179"></a>00179   { <span class="keywordflow">return</span> <a class="code" href="classcsDVector3.html" title="A 3D vector.">csDVector3</a>(v) / f; }
<a name="l00180"></a>00180 
<a name="l00182"></a><a class="code" href="classcsVector3.html#7d8f52709a5520e2b9fa71ae9bdcc7fa">00182</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#a9b4d9b2f7603a763b65c580bf00eaad" title="Divide a color by a scalar.">operator/ </a>(<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">int</span> f)
<a name="l00183"></a>00183   { <span class="keywordflow">return</span> v / (float)f; }
<a name="l00184"></a>00184 
<a name="l00186"></a><a class="code" href="classcsVector3.html#66e0e8c5f4adc5dc97d9101ed7d087b8">00186</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator== (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00187"></a>00187   { <span class="keywordflow">return</span> v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>==v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a> &amp;&amp; v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>==v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a> &amp;&amp; v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>==v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>; }
<a name="l00188"></a>00188 
<a name="l00190"></a><a class="code" href="classcsVector3.html#14effb8e6e631957c158846343cc362e">00190</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!= (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00191"></a>00191   { <span class="keywordflow">return</span> v1.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>!=v2.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a> || v1.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>!=v2.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a> || v1.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>!=v2.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>; }
<a name="l00192"></a>00192 
<a name="l00194"></a><a class="code" href="classcsVector3.html#457aa88a73812661db71dac5aa422799">00194</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> operator&gt;&gt; (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00195"></a>00195   { <span class="keywordflow">return</span> v2*(v1*v2)/(v2*v2); }
<a name="l00196"></a>00196 
<a name="l00198"></a><a class="code" href="classcsVector3.html#5a6e8a9dd6eb45cf808d1f11e85e8a05">00198</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> operator&lt;&lt; (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2)
<a name="l00199"></a>00199   { <span class="keywordflow">return</span> v1*(v1*v2)/(v1*v1); }
<a name="l00200"></a>00200 
<a name="l00202"></a><a class="code" href="classcsVector3.html#6e1bbeabb9f0f71d3a0816111006c897">00202</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator&lt; (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">float</span> f)
<a name="l00203"></a>00203   { <span class="keywordflow">return</span> <a class="code" href="group__geom__utils.html#g996f7be338ccb40d1a2a5abc1ad61759">ABS</a>(v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>)&lt;f &amp;&amp; <a class="code" href="group__geom__utils.html#g996f7be338ccb40d1a2a5abc1ad61759">ABS</a>(v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>)&lt;f &amp;&amp; <a class="code" href="group__geom__utils.html#g996f7be338ccb40d1a2a5abc1ad61759">ABS</a>(v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>)&lt;f; }
<a name="l00204"></a>00204 
<a name="l00206"></a><a class="code" href="classcsVector3.html#b810d5c75c97a7119cc48f9efb4cfa19">00206</a>   <span class="keyword">inline</span> <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator&gt; (<span class="keywordtype">float</span> f, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v)
<a name="l00207"></a>00207   { <span class="keywordflow">return</span> <a class="code" href="group__geom__utils.html#g996f7be338ccb40d1a2a5abc1ad61759">ABS</a>(v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>)&lt;f &amp;&amp; <a class="code" href="group__geom__utils.html#g996f7be338ccb40d1a2a5abc1ad61759">ABS</a>(v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>)&lt;f &amp;&amp; <a class="code" href="group__geom__utils.html#g996f7be338ccb40d1a2a5abc1ad61759">ABS</a>(v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>)&lt;f; }
<a name="l00208"></a>00208 
<a name="l00210"></a>00210 <span class="preprocessor">#ifdef __STRICT_ANSI__</span>
<a name="l00211"></a>00211 <span class="preprocessor"></span>  <span class="keyword">inline</span> <span class="keywordtype">float</span> operator[] (<span class="keywordtype">size_t</span> n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !n?x:n&amp;1?y:z; }
<a name="l00212"></a>00212 <span class="preprocessor">#else</span>
<a name="l00213"></a><a class="code" href="classcsVector3.html#1926da31cdca5c7a45821b40b2e1d39a">00213</a> <span class="preprocessor"></span>  <span class="keyword">inline</span> <span class="keywordtype">float</span> operator[] (<span class="keywordtype">size_t</span> n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m[n]; }
<a name="l00214"></a>00214 <span class="preprocessor">#endif</span>
<a name="l00215"></a>00215 <span class="preprocessor"></span>
<a name="l00217"></a>00217 <span class="preprocessor">#ifdef __STRICT_ANSI__</span>
<a name="l00218"></a>00218 <span class="preprocessor"></span>  <span class="keyword">inline</span> <span class="keywordtype">float</span> &amp; operator[] (<span class="keywordtype">size_t</span> n) { <span class="keywordflow">return</span> !n?x:n&amp;1?y:z; }
<a name="l00219"></a>00219 <span class="preprocessor">#else</span>
<a name="l00220"></a><a class="code" href="classcsVector3.html#7ef21de39bdda7a263f3ad38a271b63f">00220</a> <span class="preprocessor"></span>  <span class="keyword">inline</span> <span class="keywordtype">float</span> &amp; operator[] (<span class="keywordtype">size_t</span> n) { <span class="keywordflow">return</span> m[n]; }
<a name="l00221"></a>00221 <span class="preprocessor">#endif</span>
<a name="l00222"></a>00222 <span class="preprocessor"></span>
<a name="l00224"></a><a class="code" href="classcsVector3.html#4af056573151e79dcad7b24d459de7eb">00224</a>   <span class="keyword">inline</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; operator+= (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v)
<a name="l00225"></a>00225   {
<a name="l00226"></a>00226     x += v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>;
<a name="l00227"></a>00227     y += v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>;
<a name="l00228"></a>00228     z += v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>;
<a name="l00229"></a>00229 
<a name="l00230"></a>00230     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00231"></a>00231   }
<a name="l00232"></a>00232 
<a name="l00234"></a><a class="code" href="classcsVector3.html#0677b4ef702018e0186600a1027ef101">00234</a>   <span class="keyword">inline</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; operator-= (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v)
<a name="l00235"></a>00235   {
<a name="l00236"></a>00236     x -= v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>;
<a name="l00237"></a>00237     y -= v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>;
<a name="l00238"></a>00238     z -= v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>;
<a name="l00239"></a>00239 
<a name="l00240"></a>00240     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00241"></a>00241   }
<a name="l00242"></a>00242 
<a name="l00244"></a><a class="code" href="classcsVector3.html#ef3a7f9526f65d2f7c219649f6809d59">00244</a>   <span class="keyword">inline</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; operator*= (<span class="keywordtype">float</span> f)
<a name="l00245"></a>00245   { x *= f; y *= f; z *= f; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00246"></a>00246 
<a name="l00248"></a><a class="code" href="classcsVector3.html#49f06c8a62f0f119e9d37aed324dc2b0">00248</a>   <span class="keyword">inline</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; operator/= (<span class="keywordtype">float</span> f)
<a name="l00249"></a>00249   { f = 1.0f / f; x *= f; y *= f; z *= f; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00250"></a>00250 
<a name="l00252"></a><a class="code" href="classcsVector3.html#9d7480756a79154054ecc07de0b5ec0a">00252</a>   <span class="keyword">inline</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#4152cd06665dffa1b7bded50af1bbe34" title="Add two colors.">operator+ </a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
<a name="l00253"></a>00253 
<a name="l00255"></a><a class="code" href="classcsVector3.html#7eff302cef5eab01d17025acc9d94a9d">00255</a>   <span class="keyword">inline</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <a class="code" href="cscolor_8h.html#55e738db674cbea902cb06597df8dacf" title="Subtract two colors.">operator- </a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>(-x,-y,-z); }
<a name="l00256"></a>00256 
<a name="l00258"></a><a class="code" href="classcsVector3.html#2d705cdca75eafea8df1400583509e88">00258</a>   <span class="keyword">inline</span> <span class="keywordtype">void</span> Set (<span class="keywordtype">float</span> sx, <span class="keywordtype">float</span> sy, <span class="keywordtype">float</span> sz) { x = sx; y = sy; z = sz; }
<a name="l00259"></a>00259 
<a name="l00261"></a><a class="code" href="classcsVector3.html#8683cb36d3b238f6b5354d22b474ac2f">00261</a>   <span class="keyword">inline</span> <span class="keywordtype">void</span> Set (<a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> <span class="keyword">const</span>&amp; v) { x = v.<a class="code" href="classcsVector3.html#823fdba459ff91e8a5e6834ded7c815f" title="The X component of the vector.">x</a>; y = v.<a class="code" href="classcsVector3.html#e0a74264b61eb5d61da63b3c101af719" title="The Y component of the vector.">y</a>; z = v.<a class="code" href="classcsVector3.html#3f761bd195c7ccec59ea863a87a1ad05" title="The Z component of the vector.">z</a>; }
<a name="l00262"></a>00262 
<a name="l00264"></a><a class="code" href="classcsVector3.html#ae3487f21c9c18fa644625ff6f4dca8c">00264</a>   <span class="keyword">inline</span> <span class="keywordtype">void</span> Set (<span class="keywordtype">float</span> <span class="keyword">const</span>* v) { x = v[0]; y = v[1]; z = v[2]; }
<a name="l00265"></a>00265 
<a name="l00267"></a><a class="code" href="classcsVector3.html#4c4efd085000b072a427e5d475c199d0">00267</a>   <span class="keyword">inline</span> <span class="keywordtype">void</span> Set (<span class="keywordtype">float</span> v) { x = y = z = v; }
<a name="l00268"></a>00268 
<a name="l00270"></a><a class="code" href="classcsVector3.html#de7ba33200ebce17f6f3d9619ed06ec4">00270</a>   <span class="keyword">inline</span> <span class="keywordtype">void</span> Get (<span class="keywordtype">float</span>* v) { v[0] = x; v[1] = y; v[2] = z; }
<a name="l00271"></a>00271 
<a name="l00273"></a>00273   <span class="keywordtype">float</span> Norm () <span class="keyword">const</span>;
<a name="l00274"></a>00274 
<a name="l00276"></a><a class="code" href="classcsVector3.html#4f8fb0ed2df4d38898bbcda746c47552">00276</a>   <span class="keywordtype">float</span> SquaredNorm ()<span class="keyword"> const</span>
<a name="l00277"></a>00277 <span class="keyword">  </span>{ <span class="keywordflow">return</span> x * x + y * y + z * z; }
<a name="l00278"></a>00278 
<a name="l00284"></a><a class="code" href="classcsVector3.html#dfe6a123b665375450d78bf47eee2b77">00284</a>   <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> Unit ()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*<span class="keyword">this</span>)/(this-&gt;Norm()); }
<a name="l00285"></a>00285 
<a name="l00287"></a><a class="code" href="classcsVector3.html#710f2bd2de6b6e842774632e1654050e">00287</a>   <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">float</span> Norm (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v) { <span class="keywordflow">return</span> v.<a class="code" href="classcsVector3.html#42b1546a61c4fd76ec17c50592fcad1e" title="Returns the norm of this vector.">Norm</a>(); }
<a name="l00288"></a>00288 
<a name="l00290"></a><a class="code" href="classcsVector3.html#f438a4e42d69985e693dcbaf78cc9940">00290</a>   <span class="keyword">inline</span> <span class="keyword">static</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> Unit (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v) { <span class="keywordflow">return</span> v.<a class="code" href="classcsVector3.html#dfe6a123b665375450d78bf47eee2b77" title="Returns the unit vector in the direction of this vector.">Unit</a>(); }
<a name="l00291"></a>00291 
<a name="l00293"></a>00293   <span class="keywordtype">void</span> Normalize ();
<a name="l00294"></a>00294 
<a name="l00296"></a><a class="code" href="classcsVector3.html#bd1301a92ffbf20d43f99b1ba1346f09">00296</a>   <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsZero (<span class="keywordtype">float</span> precision = SMALL_EPSILON)<span class="keyword"> const</span>
<a name="l00297"></a>00297 <span class="keyword">  </span>{ 
<a name="l00298"></a>00298     <span class="keywordflow">return</span> (fabsf(x) &lt; precision) &amp;&amp; (fabsf(y) &lt; precision)
<a name="l00299"></a>00299             &amp;&amp; (fabsf(z) &lt; precision);
<a name="l00300"></a>00300   }
<a name="l00301"></a>00301 
<a name="l00303"></a><a class="code" href="classcsVector3.html#678aef7f60ea2869d4924edfbd39c545">00303</a>   <span class="keyword">inline</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> UnitAxisClamped ()<span class="keyword"> const</span>
<a name="l00304"></a>00304 <span class="keyword">  </span>{
<a name="l00305"></a>00305     <span class="keywordflow">if</span> (IsZero ())
<a name="l00306"></a>00306       <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (0, 0, 0);
<a name="l00307"></a>00307 
<a name="l00308"></a>00308     <span class="keywordflow">if</span> (fabsf (x) &gt; fabsf (y) &amp;&amp; fabsf (x) &gt; fabsf (z))
<a name="l00309"></a>00309       <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (x / fabsf (x), 0, 0); <span class="comment">//X biggest</span>
<a name="l00310"></a>00310     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fabsf (y) &gt; fabsf (z))
<a name="l00311"></a>00311       <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (0, y / fabsf (y), 0); <span class="comment">//Y biggest</span>
<a name="l00312"></a>00312     <span class="keywordflow">else</span>
<a name="l00313"></a>00313       <span class="keywordflow">return</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (0, 0, z / fabsf (z)); <span class="comment">//Z biggest</span>
<a name="l00314"></a>00314   }
<a name="l00315"></a>00315 
<a name="l00317"></a><a class="code" href="classcsVector3.html#1885c814e9bebfb95cdebe8a66f9f036">00317</a>   <span class="keyword">inline</span> <span class="keywordtype">int</span> DominantAxis ()<span class="keyword"> const</span>
<a name="l00318"></a>00318 <span class="keyword">  </span>{
<a name="l00319"></a>00319     <span class="keywordflow">if</span> (fabsf (x) &gt; fabsf (y) &amp;&amp; fabsf (x) &gt; fabsf (z))
<a name="l00320"></a>00320       <span class="keywordflow">return</span> <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4098e81da4ab0c7c07c39847d17fb3a95b5" title="X axis.">CS_AXIS_X</a>;
<a name="l00321"></a>00321     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (fabsf (y) &gt; fabsf (z))
<a name="l00322"></a>00322       <span class="keywordflow">return</span> <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4099734b1073fe8f5572622f5e39120317d" title="Y axis.">CS_AXIS_Y</a>;
<a name="l00323"></a>00323     <span class="keywordflow">else</span>
<a name="l00324"></a>00324       <span class="keywordflow">return</span> <a class="code" href="group__geom__utils.html#ggdb49720dc49f7d4e4cf9adbf2948e4092524f76ec772151941164bee31d5d9f1" title="Z axis.">CS_AXIS_Z</a>;
<a name="l00325"></a>00325   }
<a name="l00326"></a>00326 };
<a name="l00327"></a>00327 
<a name="l00330"></a>00330 <span class="preprocessor">#endif // __CS_VECTOR3_H__</span>
</pre></div><hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>