diff options
Diffstat (limited to 'docs/doxygen/nel/a03082.html')
-rw-r--r-- | docs/doxygen/nel/a03082.html | 1203 |
1 files changed, 1203 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03082.html b/docs/doxygen/nel/a03082.html new file mode 100644 index 00000000..3be8a59b --- /dev/null +++ b/docs/doxygen/nel/a03082.html @@ -0,0 +1,1203 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>NeL: NLMISC::CPlane class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.6 --> +<div class="qindex"> <form class="search" action="search.php" method="get"> +<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>NLMISC::CPlane Class Reference</h1><code>#include <<a class="el" href="a06171.html">plane.h</a>></code> +<p> +<hr><a name="_details"></a><h2>Detailed Description</h2> +Class <a class="el" href="a03082.html">CPlane</a>. a 3D Plane.<p> +A vector v is said "front" of a plane p if p*v>0.<p> +A "front segment" or a "front polygon" have all their vertices in front of the plane. <dl compact><dt><b>Author:</b></dt><dd>Lionel Berenguier <p> +Nevrax France </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>2000 </dd></dl> + +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00049">49</a> of file <a class="el" href="a06171.html">plane.h</a>.<table border=0 cellpadding=0 cellspacing=0> +<tr><td></td></tr> +<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> +<tr><td colspan="2"><div class="groupHeader">Projection / clipping.</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_0">clipPolygonBack</a> (<a class="el" href="a03128.html">CVector</a> <a class="el" href="a04223.html#a647">in</a>[], <a class="el" href="a03128.html">CVector</a> out[], <a class="el" href="a04558.html#a14">sint</a> nIn) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a14">sint</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_1">clipPolygonFront</a> (<a class="el" href="a03128.html">CVector</a> <a class="el" href="a04223.html#a647">in</a>[], <a class="el" href="a03128.html">CVector</a> out[], <a class="el" href="a04558.html#a14">sint</a> nIn) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_2">clipSegmentBack</a> (<a class="el" href="a03128.html">CVector</a> &p0, <a class="el" href="a03128.html">CVector</a> &p1) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_3">clipSegmentFront</a> (<a class="el" href="a03128.html">CVector</a> &p0, <a class="el" href="a03128.html">CVector</a> &p1) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_4">distance</a> (const <a class="el" href="a03128.html">CVector</a> &p) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a> (const <a class="el" href="a03128.html">CVector</a> &p0, const <a class="el" href="a03128.html">CVector</a> &p1) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Intersect a line onto a plane. p1 is returned if line // to plane. <a href="#NLMISC_1_1CPlanez1992_5"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_6">operator *</a> (const <a class="el" href="a03128.html">CVector</a> &p) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Return plane*vector. <a href="#NLMISC_1_1CPlanez1992_6"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_7">project</a> (const <a class="el" href="a03128.html">CVector</a> &p0) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Project a point onto a plane. <a href="#NLMISC_1_1CPlanez1992_7"></a><br><br></td></tr> +<tr><td colspan="2"><div class="groupHeader">Object.</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1988_0">CPlane</a> (const <a class="el" href="a03082.html">CPlane</a> &<a class="el" href="a04223.html#a576">v</a>)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy Constructor. <a href="#NLMISC_1_1CPlanez1988_0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1988_1">CPlane</a> (float _a, float _b, float _c, float _d)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor . <a href="#NLMISC_1_1CPlanez1988_1"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1988_2">CPlane</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor that does nothing. <a href="#NLMISC_1_1CPlanez1988_2"></a><br><br></td></tr> +<tr><td colspan="2"><div class="groupHeader">Construction/Get.</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03128.html">CVector</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_0">getNormal</a> () const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_1">make</a> (const <a class="el" href="a03128.html">CVector</a> &p0, const <a class="el" href="a03128.html">CVector</a> &p1, const <a class="el" href="a03128.html">CVector</a> &p2)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a> (const <a class="el" href="a03128.html">CVector</a> &normal, const <a class="el" href="a03128.html">CVector</a> &pos)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_3">normalize</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03082.html">CPlane</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_4">normed</a> () const </td></tr> + +<tr><td colspan="2"><div class="groupHeader">normal inversion</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1994_0">invert</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">invert this plane (same position, but inverted normal) <a href="#NLMISC_1_1CPlanez1994_0"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03082.html">CPlane</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1994_1">inverted</a> () const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">get the inverted version of this plane (same position, but inverted normal) <a href="#NLMISC_1_1CPlanez1994_1"></a><br><br></td></tr> +<tr><td colspan="2"><div class="groupHeader">Misc</div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1996_0">operator==</a> (const <a class="el" href="a03082.html">CPlane</a> &o) const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlanez1996_1">serial</a> (<a class="el" href="a02270.html">IStream</a> &f)</td></tr> + +<tr><td colspan=2><br><h2>Data Fields</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlaneo0">a</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlaneo1">b</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlaneo2">c</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>float </td><td class="memItemRight" valign=bottom><a class="el" href="a03082.html#NLMISC_1_1CPlaneo3">d</a></td></tr> + +</table> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="NLMISC_1_1CPlanez1988_2" doxytag="NLMISC::CPlane::CPlane" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> NLMISC::CPlane::CPlane </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Constructor that does nothing. +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00059">59</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +Referenced by <a class="el" href="a06170.html#l00154">inverted()</a>. +<p> +<div class="fragment"><pre>00059 {} +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1988_1" doxytag="NLMISC::CPlane::CPlane" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> NLMISC::CPlane::CPlane </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">float </td> + <td class="mdname" nowrap> <em>_a</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>_b</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>_c</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>float </td> + <td class="mdname" nowrap> <em>_d</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Constructor . +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00061">61</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, and <a class="el" href="a06171.html#l00052">d</a>. +<p> +<div class="fragment"><pre>00061 : <a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a>(_a), <a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a>(_b), <a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a>(_c), <a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>(_d) {} +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1988_0" doxytag="NLMISC::CPlane::CPlane" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> NLMISC::CPlane::CPlane </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03082.html">CPlane</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>v</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Copy Constructor. +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00063">63</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, <a class="el" href="a06171.html#l00052">d</a>, and <a class="el" href="a05646.html#l00237">v</a>. +<p> +<div class="fragment"><pre>00063 : <a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a>(<a class="code" href="a04223.html#a576">v</a>.a), <a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a>(<a class="code" href="a04223.html#a576">v</a>.b), <a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a>(<a class="code" href="a04223.html#a576">v</a>.c), <a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>(<a class="code" href="a04223.html#a576">v</a>.d) {} +</pre></div> </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="NLMISC_1_1CPlanez1992_0" doxytag="NLMISC::CPlane::clipPolygonBack" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> NLMISC::CPlane::clipPolygonBack </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">CVector</a> </td> + <td class="mdname" nowrap> <em>in</em>[], </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> </td> + <td class="mdname" nowrap> <em>out</em>[], </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a> </td> + <td class="mdname" nowrap> <em>nIn</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Clip a polygon by a plane. The "back polygon" is returned. Nb: Out must be allocated to nIn+1 (at less). <dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>in</em> </td><td>the input polygon </td></tr> + <tr><td valign=top><em>out</em> </td><td>the clipped back polygon </td></tr> + <tr><td valign=top><em>nIn</em> </td><td>number of vertices of input polygon </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>number of vertices of out. 0 is returned if In polygon entirely front, or if nIn<=2.</dd></dl> + +<p> +Definition at line <a class="el" href="a06170.html#l00097">97</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +References <a class="el" href="a05646.html#l01122">in</a>, <a class="el" href="a06172.html#l00051">intersect()</a>, <a class="el" href="a05646.html#l00977">s</a>, and <a class="el" href="a05981.html#l00104">sint</a>. +<p> +Referenced by <a class="el" href="a06190.html#l00056">NLMISC::CPolygon::clip()</a>, and <a class="el" href="a05532.html#l00131">NL3D::CCameraCol::minimizeDistanceAgainstTri()</a>. +<p> +<div class="fragment"><pre>00098 { +00099 <a class="code" href="a04558.html#a14">sint</a> nOut=0,<a class="code" href="a04223.html#a626">s</a>,p,i; +00100 <span class="keywordflow">if</span>(nIn<=2) <span class="keywordflow">return</span> 0; +00101 +00102 <a class="code" href="a04223.html#a626">s</a>=nIn-1; +00103 +00104 <span class="keywordflow">for</span> (i=0;i<nIn;i++) +00105 { +00106 p=i; +00107 <span class="keywordflow">if</span> ( (*this)*<a class="code" href="a04223.html#a647">in</a>[p] < 0 ) +00108 { +00109 <span class="keywordflow">if</span> ( (*this)*<a class="code" href="a04223.html#a647">in</a>[<a class="code" href="a04223.html#a626">s</a>] > 0 ) +00110 out[nOut++]= <a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a>(in[s],in[p]); +00111 out[nOut++]=<a class="code" href="a04223.html#a647">in</a>[p]; +00112 } +00113 <span class="keywordflow">else</span> +00114 { +00115 <span class="keywordflow">if</span> ( (*this)*<a class="code" href="a04223.html#a647">in</a>[<a class="code" href="a04223.html#a626">s</a>] < 0 ) +00116 out[nOut++]= <a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a>(in[s],in[p]); +00117 } +00118 <a class="code" href="a04223.html#a626">s</a>=p; +00119 } +00120 +00121 <span class="keywordflow">return</span> nOut; +00122 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1992_1" doxytag="NLMISC::CPlane::clipPolygonFront" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a14">sint</a> NLMISC::CPlane::clipPolygonFront </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">CVector</a> </td> + <td class="mdname" nowrap> <em>in</em>[], </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> </td> + <td class="mdname" nowrap> <em>out</em>[], </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a14">sint</a> </td> + <td class="mdname" nowrap> <em>nIn</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Clip a polygon by a plane. The "front polygon" is returned. Nb: Out must be allocated to nIn+1 (at less). <dl compact><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign=top><em>in</em> </td><td>the input polygon </td></tr> + <tr><td valign=top><em>out</em> </td><td>the clipped front polygon </td></tr> + <tr><td valign=top><em>nIn</em> </td><td>number of vertices of input polygon </td></tr> + </table> +</dl> +<dl compact><dt><b>Returns:</b></dt><dd>number of vertices of out. 0 is returned if In polygon entirely back, or if nIn<=2.</dd></dl> + +<p> +Definition at line <a class="el" href="a06170.html#l00125">125</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +References <a class="el" href="a05646.html#l01122">in</a>, <a class="el" href="a06172.html#l00051">intersect()</a>, <a class="el" href="a05646.html#l00977">s</a>, and <a class="el" href="a05981.html#l00104">sint</a>. +<p> +Referenced by <a class="el" href="a05618.html#l00337">NL3D::CCubeGrid< TCell >::project()</a>. +<p> +<div class="fragment"><pre>00126 { +00127 <a class="code" href="a04558.html#a14">sint</a> nOut=0,<a class="code" href="a04223.html#a626">s</a>,p,i; +00128 <span class="keywordflow">if</span>(nIn<=2) <span class="keywordflow">return</span> 0; +00129 +00130 <a class="code" href="a04223.html#a626">s</a>=nIn-1; +00131 +00132 <span class="keywordflow">for</span> (i=0;i<nIn;i++) +00133 { +00134 p=i; +00135 <span class="keywordflow">if</span> ( (*this)*<a class="code" href="a04223.html#a647">in</a>[p] > 0 ) +00136 { +00137 <span class="keywordflow">if</span> ( (*this)*<a class="code" href="a04223.html#a647">in</a>[<a class="code" href="a04223.html#a626">s</a>] < 0 ) +00138 out[nOut++]= <a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a>(in[s],in[p]); +00139 out[nOut++]=<a class="code" href="a04223.html#a647">in</a>[p]; +00140 } +00141 <span class="keywordflow">else</span> +00142 { +00143 <span class="keywordflow">if</span> ( (*this)*<a class="code" href="a04223.html#a647">in</a>[<a class="code" href="a04223.html#a626">s</a>] > 0 ) +00144 out[nOut++]= <a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a>(in[s],in[p]); +00145 } +00146 <a class="code" href="a04223.html#a626">s</a>=p; +00147 } +00148 +00149 <span class="keywordflow">return</span> nOut; +00150 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1992_2" doxytag="NLMISC::CPlane::clipSegmentBack" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NLMISC::CPlane::clipSegmentBack </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p0</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p1</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Clip a segment onto a plane. The "back segment" is written in (p1,p2). If segment is entirely "front", (p1,p2) is not modified. <dl compact><dt><b>Returns:</b></dt><dd>false if segment entirely front, or true. </dd></dl> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_3">clipSegmentFront()</a></dd></dl> + +<p> +Definition at line <a class="el" href="a06170.html#l00054">54</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +Referenced by <a class="el" href="a05384.html#l00156">NLMISC::CAABBox::clipSegment()</a>, and <a class="el" href="a05384.html#l00137">NLMISC::CAABBox::intersect()</a>. +<p> +<div class="fragment"><pre>00055 { +00056 <span class="keywordtype">float</span> d0,d1,decal; +00057 CVector proj; +00058 +00059 d0= (*this)*p0; +00060 d1= (*this)*p1; +00061 <span class="keywordflow">if</span>(d0<0 && d1<0) +00062 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00063 <span class="keywordflow">if</span>(d0>=0 && d1>=0) +00064 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00065 <span class="comment">// Clip line.</span> +00066 decal= (0-d0) / (d1-d0); +00067 proj= p0+ (p1-p0)*decal; +00068 <span class="keywordflow">if</span>(d0>=0) +00069 p0=proj; +00070 <span class="keywordflow">else</span> +00071 p1=proj; +00072 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00073 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1992_3" doxytag="NLMISC::CPlane::clipSegmentFront" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NLMISC::CPlane::clipSegmentFront </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p0</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p1</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Clip a segment onto a plane. The "front segment" is written in (p1,p2). If segment is entirely "back", (p1,p2) is not modified. <dl compact><dt><b>Returns:</b></dt><dd>false if segment entirely back, or true. </dd></dl> +<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_2">clipSegmentBack()</a></dd></dl> + +<p> +Definition at line <a class="el" href="a06170.html#l00074">74</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +<div class="fragment"><pre>00075 { +00076 <span class="keywordtype">float</span> d0,d1,decal; +00077 CVector proj; +00078 +00079 d0= (*this)*p0; +00080 d1= (*this)*p1; +00081 <span class="keywordflow">if</span>(d0>=0 && d1>=0) +00082 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00083 <span class="keywordflow">if</span>(d0<0 && d1<0) +00084 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00085 <span class="comment">// Clip line.</span> +00086 decal= (0-d0) / (d1-d0); +00087 proj= p0+ (p1-p0)*decal; +00088 <span class="keywordflow">if</span>(d0<0) +00089 p0=proj; +00090 <span class="keywordflow">else</span> +00091 p1=proj; +00092 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00093 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1992_4" doxytag="NLMISC::CPlane::distance" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float NLMISC::CPlane::distance </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>p</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Return the distance of p from the plane. Hence, the result is >=0. Since the plane normal may not be normalized, <a class="el" href="a03082.html#NLMISC_1_1CPlanez1992_4">distance()</a> compute the distance with the normalized normal of plane. If you are sure that your plane has a normalized normal, it is much faster to do a <code>fabs(p*v)</code>. +<p> +Definition at line <a class="el" href="a06172.html#l00040">40</a> of file <a class="el" href="a06172.html">plane_inline.h</a>. +<p> +References <a class="el" href="a06172.html#l00081">normed()</a>, and <a class="el" href="a05646.html#l00237">v</a>. +<p> +<div class="fragment"><pre>00041 { +00042 <a class="code" href="a03082.html#NLMISC_1_1CPlanez1988_2">CPlane</a> p= <a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_4">normed</a>(); +00043 <span class="keywordflow">return</span> (<span class="keywordtype">float</span>)fabs(p*v); +00044 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1990_0" doxytag="NLMISC::CPlane::getNormal" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> NLMISC::CPlane::getNormal </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Return the normal vector of the plane. Since the normal of the plane may not be normalized (if setuped without <a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_2">make()</a>), the returned normal may NOT be normalized. +<p> +Definition at line <a class="el" href="a06172.html#l00035">35</a> of file <a class="el" href="a06172.html">plane_inline.h</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, and <a class="el" href="a06171.html#l00052">c</a>. +<p> +Referenced by <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>, <a class="el" href="a06193.html#l00262">NL3D::CPortal::clipRay()</a>, <a class="el" href="a06350.html#l01224">NL3D::CInstanceGroup::displayDebugClusters()</a>, <a class="el" href="a06034.html#l00341">NL3D::CMiniCol::getGroundNormal()</a>, <a class="el" href="a05565.html#l01098">NLSOUND::CClusteredSound::getPolyNearestPos()</a>, <a class="el" href="a05532.html#l00131">NL3D::CCameraCol::minimizeDistanceAgainstTri()</a>, <a class="el" href="a06172.html#l00068">normalize()</a>, <a class="el" href="a06287.html#l01275">NL3D::CPSZoneRectangle::performMotion()</a>, <a class="el" href="a06287.html#l00533">NL3D::CPSZoneDisc::performMotion()</a>, <a class="el" href="a06287.html#l00215">NL3D::CPSZonePlane::performMotion()</a>, <a class="el" href="a06172.html#l00062">project()</a>, and <a class="el" href="a06768.html#l00633">NL3D::CRenderZBuffer::run()</a>. +<p> +<div class="fragment"><pre>00036 { +00037 <span class="keywordflow">return</span> CVector(a,b,c); +00038 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1992_5" doxytag="NLMISC::CPlane::intersect" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> NLMISC::CPlane::intersect </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p0</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p1</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Intersect a line onto a plane. p1 is returned if line // to plane. +<p> + +<p> +Definition at line <a class="el" href="a06172.html#l00051">51</a> of file <a class="el" href="a06172.html">plane_inline.h</a>. +<p> +Referenced by <a class="el" href="a06170.html#l00097">clipPolygonBack()</a>, <a class="el" href="a06170.html#l00125">clipPolygonFront()</a>, <a class="el" href="a06034.html#l00341">NL3D::CMiniCol::getGroundNormal()</a>, <a class="el" href="a05929.html#l01479">NLPACS::CLocalRetriever::getHeight()</a>, <a class="el" href="a06190.html#l00219">NLMISC::CBSPNode2v::insert()</a>, <a class="el" href="a05686.html#l00089">NL3D::CEvent3dMouseListener::operator()()</a>, <a class="el" href="a06172.html#l00062">project()</a>, <a class="el" href="a05618.html#l00337">NL3D::CCubeGrid< TCell >::project()</a>, <a class="el" href="a05618.html#l00253">NL3D::CCubeGrid< TCell >::select()</a>, <a class="el" href="a06034.html#l00242">NL3D::CMiniCol::snapToGround()</a>, <a class="el" href="a05929.html#l01413">NLPACS::CLocalRetriever::snapToInteriorGround()</a>, and <a class="el" href="a06725.html#l00366">NL3D::CVisualCollisionEntity::triangleIntersect()</a>. +<p> +<div class="fragment"><pre>00052 { +00053 <span class="keywordtype">float</span> decal; +00054 <span class="keywordtype">float</span> da= (*this)*p0; +00055 <span class="keywordtype">float</span> db= (*this)*p1; +00056 <span class="keywordflow">if</span>(db-da == 0) +00057 <span class="keywordflow">return</span> p0; +00058 decal= ( 0-da ) / ( db - da ); +00059 <span class="keywordflow">return</span> p0 + (p1-p0)*decal; +00060 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1994_0" doxytag="NLMISC::CPlane::invert" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NLMISC::CPlane::invert </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +invert this plane (same position, but inverted normal) +<p> + +<p> +Definition at line <a class="el" href="a06170.html#l00160">160</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, and <a class="el" href="a06171.html#l00052">d</a>. +<p> +<div class="fragment"><pre>00161 { +00162 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a> = -<a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a>; +00163 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a> = -<a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a>; +00164 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a> = -<a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a>; +00165 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a> = -<a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>; +00166 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1994_1" doxytag="NLMISC::CPlane::inverted" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03082.html">CPlane</a> NLMISC::CPlane::inverted </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +get the inverted version of this plane (same position, but inverted normal) +<p> + +<p> +Definition at line <a class="el" href="a06170.html#l00154">154</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, <a class="el" href="a06171.html#l00059">CPlane()</a>, and <a class="el" href="a06171.html#l00052">d</a>. +<p> +<div class="fragment"><pre>00155 { +00156 <span class="keywordflow">return</span> <a class="code" href="a03082.html#NLMISC_1_1CPlanez1988_2">CPlane</a>(-a, -b, -c, -d); +00157 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1990_1" doxytag="NLMISC::CPlane::make" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NLMISC::CPlane::make </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p0</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p1</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>p2</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Make a plane with 3 vertices. NB: the plane normal is normalized by <a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_2">make()</a>. +<p> +Definition at line <a class="el" href="a06170.html#l00044">44</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +References <a class="el" href="a06170.html#l00036">make()</a>, and <a class="el" href="a05646.html#l00237">v</a>. +<p> +<div class="fragment"><pre>00045 { +00046 CVector <a class="code" href="a04223.html#a576">v</a>; +00047 +00048 <a class="code" href="a04223.html#a576">v</a>=(p1-p0)^(p2-p1); +00049 <a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(v,p1); +00050 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1990_2" doxytag="NLMISC::CPlane::make" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NLMISC::CPlane::make </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>normal</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname" nowrap> <em>pos</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Make a plane with a normal and a vertex. NB: the plane normal is normalized by <a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_2">make()</a>. +<p> +Definition at line <a class="el" href="a06170.html#l00036">36</a> of file <a class="el" href="a06170.html">plane.cpp</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, <a class="el" href="a06171.html#l00052">d</a>, <a class="el" href="a06682.html#l00125">NLMISC::CVector::normed()</a>, and <a class="el" href="a05646.html#l00237">v</a>. +<p> +Referenced by <a class="el" href="a06034.html#l00056">NL3D::CMiniCol::addFaces()</a>, <a class="el" href="a05532.html#l00048">NL3D::CCameraCol::build()</a>, <a class="el" href="a06768.html#l02045">NL3D::CZoneLighter::buildZoneInformation()</a>, <a class="el" href="a05503.html#l00087">NL3D::CBSPTree< T >::CBSPNode::CBSPNode()</a>, <a class="el" href="a06193.html#l00262">NL3D::CPortal::clipRay()</a>, <a class="el" href="a06737.html#l01054">NL3D::CWaterModel::computeClippedPoly()</a>, <a class="el" href="a05929.html#l01479">NLPACS::CLocalRetriever::getHeight()</a>, <a class="el" href="a05565.html#l01098">NLSOUND::CClusteredSound::getPolyNearestPos()</a>, <a class="el" href="a05618.html#l00172">NL3D::CCubeGrid< TCell >::insert()</a>, <a class="el" href="a06190.html#l00798">NLMISC::CPolygon2D::isConvex()</a>, <a class="el" href="a06768.html#l00920">NL3D::CZoneLighter::light()</a>, <a class="el" href="a05824.html#l00305">NL3D::CInstanceLighter::light()</a>, <a class="el" href="a06170.html#l00044">make()</a>, <a class="el" href="a05384.html#l00194">NLMISC::CAABBox::makePyramid()</a>, <a class="el" href="a05563.html#l00156">NL3D::CCluster::makeVolume()</a>, <a class="el" href="a05532.html#l00131">NL3D::CCameraCol::minimizeDistanceAgainstTri()</a>, <a class="el" href="a05686.html#l00089">NL3D::CEvent3dMouseListener::operator()()</a>, <a class="el" href="a05783.html#l00051">NL3D::CHeatHaze::performHeatHaze()</a>, <a class="el" href="a06287.html#l01275">NL3D::CPSZoneRectangle::performMotion()</a>, <a class="el" href="a06287.html#l00533">NL3D::CPSZoneDisc::performMotion()</a>, <a class="el" href="a06287.html#l00215">NL3D::CPSZonePlane::performMotion()</a>, <a class="el" href="a05618.html#l00253">NL3D::CCubeGrid< TCell >::select()</a>, <a class="el" href="a06306.html#l00817">NL3D::CQuadTree< T >::selectRay()</a>, <a class="el" href="a06306.html#l00848">NL3D::CQuadTree< T >::selectSegment()</a>, <a class="el" href="a06193.html#l00167">NL3D::CPortal::setPoly()</a>, <a class="el" href="a05929.html#l01413">NLPACS::CLocalRetriever::snapToInteriorGround()</a>, <a class="el" href="a06190.html#l00392">NLMISC::CPolygon::toConvexPolygonsLocalAndBSP()</a>, and <a class="el" href="a06725.html#l00366">NL3D::CVisualCollisionEntity::triangleIntersect()</a>. +<p> +<div class="fragment"><pre>00037 { +00038 CVector <a class="code" href="a04223.html#a576">v</a>= normal.normed(); +00039 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a>= <a class="code" href="a04223.html#a576">v</a>.x; +00040 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a>= <a class="code" href="a04223.html#a576">v</a>.y; +00041 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a>= <a class="code" href="a04223.html#a576">v</a>.z; +00042 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>=-(<a class="code" href="a04223.html#a576">v</a>*p); <span class="comment">// d=- (ax+by+cz).</span> +00043 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1990_3" doxytag="NLMISC::CPlane::normalize" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NLMISC::CPlane::normalize </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Normalize the plane, such that <a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_0">getNormal()</a> return a normalized vector. +<p> +Definition at line <a class="el" href="a06172.html#l00068">68</a> of file <a class="el" href="a06172.html">plane_inline.h</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, <a class="el" href="a06171.html#l00052">d</a>, <a class="el" href="a06172.html#l00035">getNormal()</a>, and <a class="el" href="a06682.html#l00115">NLMISC::CVector::norm()</a>. +<p> +Referenced by <a class="el" href="a05503.html#l00087">NL3D::CBSPTree< T >::CBSPNode::CBSPNode()</a>, <a class="el" href="a06011.html#l00505">NL3D::CMeshMRMSkinnedGeom::clip()</a>, <a class="el" href="a06005.html#l00856">NL3D::CMeshMRMGeom::clip()</a>, <a class="el" href="a05989.html#l00482">NL3D::CMeshGeom::clip()</a>, <a class="el" href="a06350.html#l01224">NL3D::CInstanceGroup::displayDebugClusters()</a>, <a class="el" href="a05563.html#l00156">NL3D::CCluster::makeVolume()</a>, <a class="el" href="a06172.html#l00081">normed()</a>, and <a class="el" href="a06193.html#l00167">NL3D::CPortal::setPoly()</a>. +<p> +<div class="fragment"><pre>00069 { +00070 <span class="keywordtype">float</span> n= <a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_0">getNormal</a>().norm(); +00071 <span class="keywordflow">if</span>(n) +00072 { +00073 <span class="keywordtype">float</span> oon= 1.0f/n; +00074 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a>*= oon; +00075 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a>*= oon; +00076 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a>*= oon; +00077 <a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>*= oon; +00078 } +00079 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1990_4" doxytag="NLMISC::CPlane::normed" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03082.html">CPlane</a> NLMISC::CPlane::normed </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +return the normalized version of a plane. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a03082.html#NLMISC_1_1CPlanez1990_3">normalize()</a></dd></dl> + +<p> +Definition at line <a class="el" href="a06172.html#l00081">81</a> of file <a class="el" href="a06172.html">plane_inline.h</a>. +<p> +References <a class="el" href="a06172.html#l00068">normalize()</a>. +<p> +Referenced by <a class="el" href="a06172.html#l00040">distance()</a>. +<p> +<div class="fragment"><pre>00082 { +00083 <a class="code" href="a03082.html#NLMISC_1_1CPlanez1988_2">CPlane</a> ret= *<span class="keyword">this</span>; +00084 ret.normalize(); +00085 <span class="keywordflow">return</span> ret; +00086 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1992_6" doxytag="NLMISC::CPlane::operator *" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float NLMISC::CPlane::operator * </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>p</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Return plane*vector. +<p> + +<p> +Definition at line <a class="el" href="a06172.html#l00046">46</a> of file <a class="el" href="a06172.html">plane_inline.h</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, <a class="el" href="a06171.html#l00052">d</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::x</a>, <a class="el" href="a06673.html#l00051">NLMISC::CVector::y</a>, and <a class="el" href="a06673.html#l00051">NLMISC::CVector::z</a>. +<p> +<div class="fragment"><pre>00047 { +00048 <span class="keywordflow">return</span> <a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a>*p.x + <a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a>*p.y + <a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a>*p.z + <a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>; +00049 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1996_0" doxytag="NLMISC::CPlane::operator==" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NLMISC::CPlane::operator== </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03082.html">CPlane</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>o</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00161">161</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, and <a class="el" href="a06171.html#l00052">d</a>. +<p> +<div class="fragment"><pre>00162 { +00163 <span class="keywordflow">return</span> <a class="code" href="a03082.html#NLMISC_1_1CPlaneo0">a</a>==o.a && <a class="code" href="a03082.html#NLMISC_1_1CPlaneo1">b</a>==o.b && <a class="code" href="a03082.html#NLMISC_1_1CPlaneo2">c</a>==o.c && <a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>==o.d; +00164 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1992_7" doxytag="NLMISC::CPlane::project" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a03128.html">CVector</a> NLMISC::CPlane::project </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">CVector</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>p0</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const<code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Project a point onto a plane. +<p> + +<p> +Definition at line <a class="el" href="a06172.html#l00062">62</a> of file <a class="el" href="a06172.html">plane_inline.h</a>. +<p> +References <a class="el" href="a06172.html#l00035">getNormal()</a>, and <a class="el" href="a06172.html#l00051">intersect()</a>. +<p> +Referenced by <a class="el" href="a06350.html#l01224">NL3D::CInstanceGroup::displayDebugClusters()</a>, and <a class="el" href="a05565.html#l01098">NLSOUND::CClusteredSound::getPolyNearestPos()</a>. +<p> +<div class="fragment"><pre>00063 { +00064 <span class="keywordflow">return</span> <a class="code" href="a03082.html#NLMISC_1_1CPlanez1992_5">intersect</a>(p0, p0+<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_0">getNormal</a>()); +00065 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlanez1996_1" doxytag="NLMISC::CPlane::serial" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NLMISC::CPlane::serial </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02270.html">IStream</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>f</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00155">155</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +References <a class="el" href="a06171.html#l00052">a</a>, <a class="el" href="a06171.html#l00052">b</a>, <a class="el" href="a06171.html#l00052">c</a>, <a class="el" href="a06171.html#l00052">d</a>, and <a class="el" href="a06462.html#l00232">NLMISC::IStream::serial()</a>. +<p> +<div class="fragment"><pre>00156 { +00157 f.serial(a,b,c,d); +00158 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Field Documentation</h2> +<a class="anchor" name="NLMISC_1_1CPlaneo0" doxytag="NLMISC::CPlane::a" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float <a class="el" href="a03082.html#NLMISC_1_1CPlaneo0">NLMISC::CPlane::a</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00052">52</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +Referenced by <a class="el" href="a06171.html#l00061">CPlane()</a>, <a class="el" href="a06172.html#l00035">getNormal()</a>, <a class="el" href="a06170.html#l00160">invert()</a>, <a class="el" href="a06170.html#l00154">inverted()</a>, <a class="el" href="a06170.html#l00036">make()</a>, <a class="el" href="a06172.html#l00068">normalize()</a>, <a class="el" href="a06172.html#l00046">operator *()</a>, <a class="el" href="a05972.html#l01308">NLMISC::operator *()</a>, <a class="el" href="a06171.html#l00161">operator==()</a>, <a class="el" href="a05783.html#l00051">NL3D::CHeatHaze::performHeatHaze()</a>, and <a class="el" href="a06171.html#l00155">serial()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlaneo1" doxytag="NLMISC::CPlane::b" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float <a class="el" href="a03082.html#NLMISC_1_1CPlaneo1">NLMISC::CPlane::b</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00052">52</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +Referenced by <a class="el" href="a06171.html#l00061">CPlane()</a>, <a class="el" href="a06172.html#l00035">getNormal()</a>, <a class="el" href="a06170.html#l00160">invert()</a>, <a class="el" href="a06170.html#l00154">inverted()</a>, <a class="el" href="a06170.html#l00036">make()</a>, <a class="el" href="a06172.html#l00068">normalize()</a>, <a class="el" href="a06172.html#l00046">operator *()</a>, <a class="el" href="a05972.html#l01308">NLMISC::operator *()</a>, <a class="el" href="a06171.html#l00161">operator==()</a>, and <a class="el" href="a06171.html#l00155">serial()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlaneo2" doxytag="NLMISC::CPlane::c" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float <a class="el" href="a03082.html#NLMISC_1_1CPlaneo2">NLMISC::CPlane::c</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00052">52</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +Referenced by <a class="el" href="a06171.html#l00061">CPlane()</a>, <a class="el" href="a06172.html#l00035">getNormal()</a>, <a class="el" href="a06170.html#l00160">invert()</a>, <a class="el" href="a06170.html#l00154">inverted()</a>, <a class="el" href="a06170.html#l00036">make()</a>, <a class="el" href="a06172.html#l00068">normalize()</a>, <a class="el" href="a06172.html#l00046">operator *()</a>, <a class="el" href="a05972.html#l01308">NLMISC::operator *()</a>, <a class="el" href="a06171.html#l00161">operator==()</a>, <a class="el" href="a05783.html#l00051">NL3D::CHeatHaze::performHeatHaze()</a>, and <a class="el" href="a06171.html#l00155">serial()</a>. </td> + </tr> +</table> +<a class="anchor" name="NLMISC_1_1CPlaneo3" doxytag="NLMISC::CPlane::d" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> float <a class="el" href="a03082.html#NLMISC_1_1CPlaneo3">NLMISC::CPlane::d</a> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06171.html#l00052">52</a> of file <a class="el" href="a06171.html">plane.h</a>. +<p> +Referenced by <a class="el" href="a06193.html#l00262">NL3D::CPortal::clipRay()</a>, <a class="el" href="a06737.html#l01054">NL3D::CWaterModel::computeClippedPoly()</a>, <a class="el" href="a06171.html#l00061">CPlane()</a>, <a class="el" href="a06170.html#l00160">invert()</a>, <a class="el" href="a06170.html#l00154">inverted()</a>, <a class="el" href="a06170.html#l00036">make()</a>, <a class="el" href="a05532.html#l00131">NL3D::CCameraCol::minimizeDistanceAgainstTri()</a>, <a class="el" href="a06172.html#l00068">normalize()</a>, <a class="el" href="a06172.html#l00046">operator *()</a>, <a class="el" href="a05972.html#l01308">NLMISC::operator *()</a>, <a class="el" href="a06171.html#l00161">operator==()</a>, <a class="el" href="a05783.html#l00051">NL3D::CHeatHaze::performHeatHaze()</a>, and <a class="el" href="a06171.html#l00155">serial()</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following files:<ul> +<li><a class="el" href="a06171.html">plane.h</a><li><a class="el" href="a06170.html">plane.cpp</a><li><a class="el" href="a06172.html">plane_inline.h</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 13:27:45 2004 for NeL by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 > +</a>1.3.6 </small></address> +</body> +</html> |