diff options
Diffstat (limited to 'docs/doxygen/nel/a03070.html')
-rw-r--r-- | docs/doxygen/nel/a03070.html | 563 |
1 files changed, 563 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03070.html b/docs/doxygen/nel/a03070.html new file mode 100644 index 00000000..7ebbff10 --- /dev/null +++ b/docs/doxygen/nel/a03070.html @@ -0,0 +1,563 @@ +<!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: NL3D::CPatchUVLocator 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>NL3D::CPatchUVLocator Class Reference</h1><code>#include <<a class="el" href="a06166.html">patchuv_locator.h</a>></code> +<p> +<hr><a name="_details"></a><h2>Detailed Description</h2> +From a patch and UV coordinate in [0,OrderS], [0,OrderT], retrieve the appropriate coordinate in neighborhood. <dl compact><dt><b>Author:</b></dt><dd>Lionel Berenguier <p> +Nevrax France </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl> + +<p> + +<p> +Definition at line <a class="el" href="a06166.html#l00045">45</a> of file <a class="el" href="a06166.html">patchuv_locator.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 class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatora0">build</a> (const <a class="el" href="a03057.html">CPatch</a> *patchCenter, <a class="el" href="a04558.html#a14">sint</a> edgeCenter, <a class="el" href="a03058.html">CPatch::CBindInfo</a> &bindInfo)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatora1">locateUV</a> (const <a class="el" href="a03660.html">NLMISC::CVector2f</a> &uvIn, <a class="el" href="a04558.html#a15">uint</a> patch, <a class="el" href="a03057.html">CPatch</a> *&patchOut, <a class="el" href="a03660.html">NLMISC::CVector2f</a> &uvOut)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatora2">sameEdgeOrder</a> () const </td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatora3">selectPatch</a> (const <a class="el" href="a03660.html">NLMISC::CVector2f</a> &uvIn)</td></tr> + +<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03057.html">CPatch</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr0">_CenterPatch</a></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="a03070.html#NL3D_1_1CPatchUVLocatorr1">_CenterPatchEdge</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03071.html">CUVBasis</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr2">_NeighborBasis</a> [4]</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03057.html">CPatch</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr3">_NeighborPatch</a> [4]</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="a03070.html#NL3D_1_1CPatchUVLocatorr4">_NPatchs</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr5">_SameEdgeOrder</a></td></tr> + +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="NL3D_1_1CPatchUVLocatora0" doxytag="NL3D::CPatchUVLocator::build" ></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 NL3D::CPatchUVLocator::build </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03057.html">CPatch</a> * </td> + <td class="mdname" nowrap> <em>patchCenter</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>edgeCenter</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03058.html">CPatch::CBindInfo</a> & </td> + <td class="mdname" nowrap> <em>bindInfo</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> + +<p> +Definition at line <a class="el" href="a06165.html#l00038">38</a> of file <a class="el" href="a06165.html">patchuv_locator.cpp</a>. +<p> +References <a class="el" href="a06166.html#l00082">_CenterPatch</a>, <a class="el" href="a06166.html#l00083">_CenterPatchEdge</a>, <a class="el" href="a06166.html#l00086">_NeighborBasis</a>, <a class="el" href="a06166.html#l00085">_NeighborPatch</a>, <a class="el" href="a06166.html#l00084">_NPatchs</a>, <a class="el" href="a06166.html#l00087">_SameEdgeOrder</a>, <a class="el" href="a06156.html#l00322">NL3D::CPatch::CBindInfo::Edge</a>, <a class="el" href="a06155.html#l02196">NL3D::CPatch::getOrderForEdge()</a>, <a class="el" href="a06156.html#l00392">NL3D::CPatch::getOrderS()</a>, <a class="el" href="a06156.html#l00393">NL3D::CPatch::getOrderT()</a>, <a class="el" href="a06156.html#l00318">NL3D::CPatch::CBindInfo::MultipleBindId</a>, <a class="el" href="a06156.html#l00316">NL3D::CPatch::CBindInfo::MultipleBindNum</a>, <a class="el" href="a06156.html#l00321">NL3D::CPatch::CBindInfo::Next</a>, <a class="el" href="a05622.html#l00290">nlassert</a>, <a class="el" href="a06156.html#l00312">NL3D::CPatch::CBindInfo::NPatchs</a>, <a class="el" href="a06677.html#l00110">NLMISC::CVector2f::set()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a06166.html#l00073">NL3D::CPatchUVLocator::CUVBasis::UvI</a>, <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::x</a>, <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::y</a>, and <a class="el" href="a06156.html#l00309">NL3D::CPatch::CBindInfo::Zone</a>. +<p> +Referenced by <a class="el" href="a06155.html#l01847">NL3D::CPatch::bind()</a>, <a class="el" href="a06764.html#l00042">NL3D::CZoneCornerSmoother::buildPatchBindInfo()</a>, <a class="el" href="a06155.html#l01363">NL3D::CPatch::computeContinousVertex()</a>, <a class="el" href="a06158.html#l00471">NL3D::CPatch::computeDisplaceCornerSmooth()</a>, <a class="el" href="a06158.html#l00288">NL3D::CPatch::computeDisplaceEdgeSmooth()</a>, <a class="el" href="a06158.html#l00422">NL3D::CPatch::computeDisplaceRawOnNeighbor()</a>, <a class="el" href="a06157.html#l00864">NL3D::CPatch::computeNearBlockLightmap()</a>, <a class="el" href="a06158.html#l00728">NL3D::CPatch::computeNormalCornerSmooth()</a>, <a class="el" href="a06158.html#l00588">NL3D::CPatch::computeNormalEdgeSmooth()</a>, <a class="el" href="a06158.html#l00675">NL3D::CPatch::computeNormalOnNeighbor()</a>, and <a class="el" href="a06157.html#l00799">NL3D::CPatch::computeTileLightmapPixelAroundCorner()</a>. +<p> +<div class="fragment"><pre>00039 { +00040 <a class="code" href="a04199.html#a6">nlassert</a>(bindInfo.Zone); +00041 <span class="comment">// copy basic. NB: NPatchs==0 means patchCenter is binded on a 1/X patch.</span> +00042 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr0">_CenterPatch</a>= const_cast<CPatch*>(patchCenter); +00043 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr1">_CenterPatchEdge</a>= edgeCenter; +00044 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr4">_NPatchs</a>= bindInfo.NPatchs; +00045 +00046 +00047 <span class="comment">// set it to true. false-d if one of the neighbor patch does not have same number of tile.</span> +00048 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr5">_SameEdgeOrder</a>= <span class="keyword">true</span>; +00049 +00050 +00051 <span class="comment">// For all patchs binded to me.</span> +00052 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a14">sint</a> i=0; i<<a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr4">_NPatchs</a>; i++) +00053 { +00054 <span class="comment">// The edge of the neihbor on which we are binded.</span> +00055 <a class="code" href="a04558.html#a14">sint</a> edgeNeighbor= bindInfo.Edge[i]; +00056 CPatch *paNeighbor= bindInfo.Next[i]; +00057 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr3">_NeighborPatch</a>[i]= paNeighbor; +00058 +00059 +00060 <span class="comment">// Find uvI, uvJ, uvP such that: </span> +00061 <span class="comment">// uvOut= uvIn.x * uvI + uvIn.y * uvJ + uvP.</span> +00062 <a class="code" href="a03660.html">CVector2f</a> &uvI= <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr2">_NeighborBasis</a>[i].<a class="code" href="a03071.html#NL3D_1_1CPatchUVLocator_1_1CUVBasiso0">UvI</a>; +00063 <a class="code" href="a03660.html">CVector2f</a> &uvJ= _NeighborBasis[i].UvJ; +00064 <a class="code" href="a03660.html">CVector2f</a> &uvP= _NeighborBasis[i].UvP; +00065 +00066 +00067 <span class="comment">// Find the basis MeToNeighbor.</span> +00068 <span class="comment">//=============================</span> +00069 <a class="code" href="a04558.html#a14">sint</a> rotation= (edgeCenter - edgeNeighbor + 4) & 3; +00070 <span class="comment">// Find scale to apply.</span> +00071 <span class="keywordtype">float</span> scX, scY; +00072 <span class="comment">// If our neighbor edge is a vertical edge</span> +00073 <span class="keywordflow">if</span>( (edgeNeighbor&1)==0 ) +00074 { +00075 scX= 1; +00076 +00077 <span class="comment">// Manage difference of Order at the edge.</span> +00078 scY= (<span class="keywordtype">float</span>)paNeighbor->getOrderForEdge(edgeNeighbor) / (<span class="keywordtype">float</span>)patchCenter->getOrderForEdge(edgeCenter); +00079 <span class="comment">// Manage bind on the edge.</span> +00080 <span class="comment">// If patchCenter is binded on a bigger</span> +00081 <span class="keywordflow">if</span>(bindInfo.MultipleBindNum!=0) +00082 scY/= bindInfo.MultipleBindNum; +00083 <span class="keywordflow">if</span>(_NPatchs>1) +00084 scY*= _NPatchs; +00085 <span class="comment">// same TileOrder on the edge??</span> +00086 <span class="keywordflow">if</span>(scY!=1) +00087 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr5">_SameEdgeOrder</a>= <span class="keyword">false</span>; +00088 } +00089 <span class="keywordflow">else</span> +00090 { +00091 scY= 1; +00092 +00093 <span class="comment">// Manage difference of Order at the edge.</span> +00094 scX= (<span class="keywordtype">float</span>)paNeighbor->getOrderForEdge(edgeNeighbor) / (<span class="keywordtype">float</span>)patchCenter->getOrderForEdge(edgeCenter); +00095 <span class="comment">// Manage bind on the edge.</span> +00096 <span class="comment">// If patchCenter is binded on a bigger</span> +00097 <span class="keywordflow">if</span>(bindInfo.MultipleBindNum!=0) +00098 scX/= bindInfo.MultipleBindNum; +00099 <span class="keywordflow">if</span>(_NPatchs>1) +00100 scX*= _NPatchs; +00101 <span class="comment">// same TileOrder on the edge??</span> +00102 <span class="keywordflow">if</span>(scX!=1) +00103 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr5">_SameEdgeOrder</a>= <span class="keyword">false</span>; +00104 } +00105 <span class="comment">// Find rotation to apply.</span> +00106 <span class="keywordflow">switch</span>(rotation) +00107 { +00108 <span class="keywordflow">case</span> 0: uvI.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(-scX, 0); uvJ.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(0, -scY); <span class="keywordflow">break</span>; +00109 <span class="keywordflow">case</span> 1: uvI.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(0, -scY); uvJ.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(scX, 0); <span class="keywordflow">break</span>; +00110 <span class="keywordflow">case</span> 2: uvI.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(scX, 0); uvJ.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(0, scY); <span class="keywordflow">break</span>; +00111 <span class="keywordflow">case</span> 3: uvI.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(0, scY); uvJ.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(-scX, 0); <span class="keywordflow">break</span>; +00112 } +00113 +00114 +00115 <span class="comment">// Find the position.</span> +00116 <span class="comment">//=============================</span> +00117 <span class="comment">// Find the uv coord at start of the edge, for 2 patchs.</span> +00118 <a class="code" href="a03660.html">CVector2f</a> uvCenter; +00119 <a class="code" href="a03660.html">CVector2f</a> uvNeighbor; +00120 <span class="keywordtype">float</span> decal; +00121 +00122 <span class="comment">// find the uv at start of edgeCenter, + decal due to bind 1/X.</span> +00123 <span class="keywordtype">float</span> ocS= patchCenter->getOrderS(); +00124 <span class="keywordtype">float</span> ocT= patchCenter->getOrderT(); +00125 <span class="comment">// Manage Bind 1/X.</span> +00126 <span class="keywordflow">if</span>(_NPatchs>1) +00127 { +00128 <span class="comment">// Move uvCenter, so it is near the position at start of edgeNeighbor.</span> +00129 decal= (<span class="keywordtype">float</span>)i / _NPatchs; +00130 } +00131 <span class="keywordflow">else</span> +00132 decal= 0; +00133 <span class="comment">// Manage rotation.</span> +00134 <span class="keywordflow">switch</span>(edgeCenter) +00135 { +00136 <span class="keywordflow">case</span> 0: uvCenter.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(0, decal*ocT); <span class="keywordflow">break</span>; +00137 <span class="keywordflow">case</span> 1: uvCenter.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(decal*ocS, ocT); <span class="keywordflow">break</span>; +00138 <span class="keywordflow">case</span> 2: uvCenter.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(ocS, (1-decal)*ocT); <span class="keywordflow">break</span>; +00139 <span class="keywordflow">case</span> 3: uvCenter.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>((1-decal)*ocS, 0); <span class="keywordflow">break</span>; +00140 }; +00141 +00142 <span class="comment">// find the uv at start of edgeNeighbor, + decal due to bind X/1.</span> +00143 <span class="keywordtype">float</span> onS= paNeighbor->getOrderS(); +00144 <span class="keywordtype">float</span> onT= paNeighbor->getOrderT(); +00145 <span class="comment">// Manage Bind X/1.</span> +00146 <span class="keywordflow">if</span>(bindInfo.MultipleBindNum!=0) +00147 { +00148 <span class="comment">// Must invert the id, because of mirror.... (make a draw).</span> +00149 <a class="code" href="a04558.html#a14">sint</a> <span class="keywordtype">id</span>= (bindInfo.MultipleBindNum-1) - bindInfo.MultipleBindId; +00150 <span class="comment">// Move uvNeighbor, so it is near the position at start of edgeCenter.</span> +00151 decal= (<span class="keywordtype">float</span>)<span class="keywordtype">id</span> / bindInfo.MultipleBindNum; +00152 } +00153 <span class="keywordflow">else</span> +00154 decal= 0; +00155 <span class="comment">// Manage rotation.</span> +00156 <span class="keywordflow">switch</span>(edgeNeighbor) +00157 { +00158 <span class="keywordflow">case</span> 0: uvNeighbor.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(0, (1-decal)*onT); <span class="keywordflow">break</span>; +00159 <span class="keywordflow">case</span> 1: uvNeighbor.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>((1-decal)*onS, onT); <span class="keywordflow">break</span>; +00160 <span class="keywordflow">case</span> 2: uvNeighbor.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(onS, decal*onT); <span class="keywordflow">break</span>; +00161 <span class="keywordflow">case</span> 3: uvNeighbor.<a class="code" href="a03660.html#NLMISC_1_1CVector2fz2067_6">set</a>(decal*onS, 0); <span class="keywordflow">break</span>; +00162 }; +00163 +00164 +00165 +00166 <span class="comment">// uvOut= uvIn.x * uvI + uvIn.y * uvJ + uvP.</span> +00167 <span class="comment">// So uvP = uvOut - uvIn.x * uvI - uvIn.y * uvJ</span> +00168 uvP= uvNeighbor - uvCenter.<a class="code" href="a03660.html#NLMISC_1_1CVector2fo0">x</a> * uvI - uvCenter.<a class="code" href="a03660.html#NLMISC_1_1CVector2fo1">y</a> * uvJ; +00169 +00170 } +00171 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatora1" doxytag="NL3D::CPatchUVLocator::locateUV" ></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 NL3D::CPatchUVLocator::locateUV </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03660.html">NLMISC::CVector2f</a> & </td> + <td class="mdname" nowrap> <em>uvIn</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname" nowrap> <em>patch</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03057.html">CPatch</a> *& </td> + <td class="mdname" nowrap> <em>patchOut</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap><a class="el" href="a03660.html">NLMISC::CVector2f</a> & </td> + <td class="mdname" nowrap> <em>uvOut</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> + +<p> +Definition at line <a class="el" href="a06165.html#l00202">202</a> of file <a class="el" href="a06165.html">patchuv_locator.cpp</a>. +<p> +References <a class="el" href="a06166.html#l00086">_NeighborBasis</a>, <a class="el" href="a06166.html#l00085">_NeighborPatch</a>, <a class="el" href="a06166.html#l00084">_NPatchs</a>, <a class="el" href="a06166.html#l00075">NL3D::CPatchUVLocator::CUVBasis::mulPoint()</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a06155.html#l01847">NL3D::CPatch::bind()</a>, <a class="el" href="a06155.html#l01363">NL3D::CPatch::computeContinousVertex()</a>, <a class="el" href="a06158.html#l00471">NL3D::CPatch::computeDisplaceCornerSmooth()</a>, <a class="el" href="a06158.html#l00288">NL3D::CPatch::computeDisplaceEdgeSmooth()</a>, <a class="el" href="a06158.html#l00422">NL3D::CPatch::computeDisplaceRawOnNeighbor()</a>, <a class="el" href="a06157.html#l00864">NL3D::CPatch::computeNearBlockLightmap()</a>, <a class="el" href="a06158.html#l00728">NL3D::CPatch::computeNormalCornerSmooth()</a>, <a class="el" href="a06158.html#l00588">NL3D::CPatch::computeNormalEdgeSmooth()</a>, <a class="el" href="a06158.html#l00675">NL3D::CPatch::computeNormalOnNeighbor()</a>, and <a class="el" href="a06157.html#l00799">NL3D::CPatch::computeTileLightmapPixelAroundCorner()</a>. +<p> +<div class="fragment"><pre>00203 { +00204 <span class="keywordflow">if</span>(<a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr4">_NPatchs</a>==1) +00205 { +00206 <span class="comment">// Change basis and select good patch.</span> +00207 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr2">_NeighborBasis</a>[0].<a class="code" href="a03071.html#NL3D_1_1CPatchUVLocator_1_1CUVBasisa0">mulPoint</a>(uvIn, uvOut); +00208 patchOut= <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr3">_NeighborPatch</a>[0]; +00209 } +00210 <span class="keywordflow">else</span> +00211 { +00212 <span class="comment">// Change basis and select good patch.</span> +00213 <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr2">_NeighborBasis</a>[patch].<a class="code" href="a03071.html#NL3D_1_1CPatchUVLocator_1_1CUVBasisa0">mulPoint</a>(uvIn, uvOut); +00214 patchOut= <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr3">_NeighborPatch</a>[patch]; +00215 } +00216 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatora2" doxytag="NL3D::CPatchUVLocator::sameEdgeOrder" ></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 NL3D::CPatchUVLocator::sameEdgeOrder </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 true only if the 2 edges have same number of tiles. bind 1/X case: return true only if ALL the adjacents patchs respect this rule. So you are sure that for all the src patch, one tile has exaclty one neighbor tile near him. +<p> +Definition at line <a class="el" href="a06166.html#l00066">66</a> of file <a class="el" href="a06166.html">patchuv_locator.h</a>. +<p> +References <a class="el" href="a06166.html#l00087">_SameEdgeOrder</a>. +<p> +Referenced by <a class="el" href="a06764.html#l00042">NL3D::CZoneCornerSmoother::buildPatchBindInfo()</a>, and <a class="el" href="a06157.html#l00864">NL3D::CPatch::computeNearBlockLightmap()</a>. +<p> +<div class="fragment"><pre>00066 {<span class="keywordflow">return</span> <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr5">_SameEdgeOrder</a>;} +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatora3" doxytag="NL3D::CPatchUVLocator::selectPatch" ></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#a15">uint</a> NL3D::CPatchUVLocator::selectPatch </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03660.html">NLMISC::CVector2f</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>uvIn</em> </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> + +<p> +Definition at line <a class="el" href="a06165.html#l00175">175</a> of file <a class="el" href="a06165.html">patchuv_locator.cpp</a>. +<p> +References <a class="el" href="a06166.html#l00082">_CenterPatch</a>, <a class="el" href="a06166.html#l00083">_CenterPatchEdge</a>, <a class="el" href="a06166.html#l00084">_NPatchs</a>, <a class="el" href="a05587.html#l00115">NLMISC::clamp()</a>, <a class="el" href="a06156.html#l00392">NL3D::CPatch::getOrderS()</a>, <a class="el" href="a06156.html#l00393">NL3D::CPatch::getOrderT()</a>, <a class="el" href="a05981.html#l00104">sint</a>, <a class="el" href="a05981.html#l00105">uint</a>, <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::x</a>, and <a class="el" href="a06677.html#l00052">NLMISC::CVector2f::y</a>. +<p> +Referenced by <a class="el" href="a06155.html#l01847">NL3D::CPatch::bind()</a>, <a class="el" href="a06155.html#l01363">NL3D::CPatch::computeContinousVertex()</a>, <a class="el" href="a06158.html#l00471">NL3D::CPatch::computeDisplaceCornerSmooth()</a>, <a class="el" href="a06158.html#l00288">NL3D::CPatch::computeDisplaceEdgeSmooth()</a>, <a class="el" href="a06158.html#l00422">NL3D::CPatch::computeDisplaceRawOnNeighbor()</a>, <a class="el" href="a06157.html#l00864">NL3D::CPatch::computeNearBlockLightmap()</a>, <a class="el" href="a06158.html#l00728">NL3D::CPatch::computeNormalCornerSmooth()</a>, <a class="el" href="a06158.html#l00588">NL3D::CPatch::computeNormalEdgeSmooth()</a>, <a class="el" href="a06158.html#l00675">NL3D::CPatch::computeNormalOnNeighbor()</a>, and <a class="el" href="a06157.html#l00799">NL3D::CPatch::computeTileLightmapPixelAroundCorner()</a>. +<p> +<div class="fragment"><pre>00176 { +00177 <span class="keywordflow">if</span>(<a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr4">_NPatchs</a>==1) +00178 <span class="keywordflow">return</span> 0; +00179 <span class="keywordflow">else</span> +00180 { +00181 <span class="comment">// Choice before on which patch we must go.</span> +00182 <span class="keywordtype">float</span> selection=0.0; +00183 <a class="code" href="a04558.html#a15">uint</a> os= <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr0">_CenterPatch</a>->getOrderS(); +00184 <a class="code" href="a04558.html#a15">uint</a> ot= <a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr0">_CenterPatch</a>->getOrderT(); +00185 <span class="keywordflow">switch</span>(<a class="code" href="a03070.html#NL3D_1_1CPatchUVLocatorr1">_CenterPatchEdge</a>) +00186 { +00187 <span class="keywordflow">case</span> 0: selection= uvIn.<a class="code" href="a03660.html#NLMISC_1_1CVector2fo1">y</a> / ot; <span class="keywordflow">break</span>; +00188 <span class="keywordflow">case</span> 1: selection= uvIn.<a class="code" href="a03660.html#NLMISC_1_1CVector2fo0">x</a> / os; <span class="keywordflow">break</span>; +00189 <span class="keywordflow">case</span> 2: selection= (ot-uvIn.<a class="code" href="a03660.html#NLMISC_1_1CVector2fo1">y</a>) / ot; <span class="keywordflow">break</span>; +00190 <span class="keywordflow">case</span> 3: selection= (os-uvIn.<a class="code" href="a03660.html#NLMISC_1_1CVector2fo0">x</a>) / os; <span class="keywordflow">break</span>; +00191 } +00192 +00193 <a class="code" href="a04558.html#a14">sint</a> sel= (<a class="code" href="a04558.html#a14">sint</a>)floor(selection*_NPatchs); +00194 <a class="code" href="a05378.html#a374">clamp</a>(sel, 0, _NPatchs-1); +00195 +00196 <span class="keywordflow">return</span> sel; +00197 } +00198 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Field Documentation</h2> +<a class="anchor" name="NL3D_1_1CPatchUVLocatorr0" doxytag="NL3D::CPatchUVLocator::_CenterPatch" ></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="a03057.html">CPatch</a>* <a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr0">NL3D::CPatchUVLocator::_CenterPatch</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06166.html#l00082">82</a> of file <a class="el" href="a06166.html">patchuv_locator.h</a>. +<p> +Referenced by <a class="el" href="a06165.html#l00038">build()</a>, and <a class="el" href="a06165.html#l00175">selectPatch()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatorr1" doxytag="NL3D::CPatchUVLocator::_CenterPatchEdge" ></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> <a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr1">NL3D::CPatchUVLocator::_CenterPatchEdge</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06166.html#l00083">83</a> of file <a class="el" href="a06166.html">patchuv_locator.h</a>. +<p> +Referenced by <a class="el" href="a06165.html#l00038">build()</a>, and <a class="el" href="a06165.html#l00175">selectPatch()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatorr2" doxytag="NL3D::CPatchUVLocator::_NeighborBasis" ></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="a03071.html">CUVBasis</a> <a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr2">NL3D::CPatchUVLocator::_NeighborBasis</a>[4]<code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06166.html#l00086">86</a> of file <a class="el" href="a06166.html">patchuv_locator.h</a>. +<p> +Referenced by <a class="el" href="a06165.html#l00038">build()</a>, and <a class="el" href="a06165.html#l00202">locateUV()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatorr3" doxytag="NL3D::CPatchUVLocator::_NeighborPatch" ></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="a03057.html">CPatch</a>* <a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr3">NL3D::CPatchUVLocator::_NeighborPatch</a>[4]<code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06166.html#l00085">85</a> of file <a class="el" href="a06166.html">patchuv_locator.h</a>. +<p> +Referenced by <a class="el" href="a06165.html#l00038">build()</a>, and <a class="el" href="a06165.html#l00202">locateUV()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatorr4" doxytag="NL3D::CPatchUVLocator::_NPatchs" ></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> <a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr4">NL3D::CPatchUVLocator::_NPatchs</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06166.html#l00084">84</a> of file <a class="el" href="a06166.html">patchuv_locator.h</a>. +<p> +Referenced by <a class="el" href="a06165.html#l00038">build()</a>, <a class="el" href="a06165.html#l00202">locateUV()</a>, and <a class="el" href="a06165.html#l00175">selectPatch()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPatchUVLocatorr5" doxytag="NL3D::CPatchUVLocator::_SameEdgeOrder" ></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 <a class="el" href="a03070.html#NL3D_1_1CPatchUVLocatorr5">NL3D::CPatchUVLocator::_SameEdgeOrder</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06166.html#l00087">87</a> of file <a class="el" href="a06166.html">patchuv_locator.h</a>. +<p> +Referenced by <a class="el" href="a06165.html#l00038">build()</a>, and <a class="el" href="a06166.html#l00066">sameEdgeOrder()</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following files:<ul> +<li><a class="el" href="a06166.html">patchuv_locator.h</a><li><a class="el" href="a06165.html">patchuv_locator.cpp</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 07:01:14 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> |