Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > dd7a95aabe1c049ac9f84beede8143d3 > files > 2245

synopsis-doc-0.12-4.fc14.i686.rpm

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <title>Synopsis Cross-Reference</title>
    <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"/>
    <link href="/style.css" type="text/css" rel="stylesheet" />
  </head>
  <body class="Source">
    <h1>Synopsis Cross-Reference</h1>
    <div class="navigation">
<span class="normal"><a href="../index.html" >Index</a></span>
<span class="normal"><a href="../dir.html" >Directory Listing</a></span>
</div>
File: <b >Nurbs.h</b><pre class="sxr"><a id="line1"></a><span class="lineno"> 1</span><span class="line">#ifndef Nurbs_h_</span>
<a id="line2"></a><span class="lineno"> 2</span><span class="line">#define Nurbs_h_</span>
<a id="line3"></a><span class="lineno"> 3</span>
<a id="line4"></a><span class="lineno"> 4</span><span class="line">#include &quot;Path.h&quot;</span>
<a id="line5"></a><span class="lineno"> 5</span><span class="line">#include &lt;vector&gt;</span>
<a id="line6"></a><span class="lineno"> 6</span>
<a id="line7"></a><span class="lineno"> 7</span><span class="line"><span class="keyword">namespace</span> <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths" title="namespace Paths">Paths</a></span>
<a id="line8"></a><span class="lineno"> 8</span><span class="line">{</span>
<a id="line9"></a><span class="lineno"> 9</span>
<a id="line10"></a><span class="lineno">10</span><span class="line"><span class="comment">//. The Nurbs class. It implements a nurbs curve</span></span>
<a id="line11"></a><span class="lineno">11</span><span class="line"><span class="comment">//. for the given order. It is a very powerful</span></span>
<a id="line12"></a><span class="lineno">12</span><span class="line"><span class="comment">//. and flexible curve representation. For simpler</span></span>
<a id="line13"></a><span class="lineno">13</span><span class="line"><span class="comment">//. cases you may prefer to use a `Bezier` curve.</span></span>
<a id="line14"></a><span class="lineno">14</span><span class="line"><span class="comment">//.</span></span>
<a id="line15"></a><span class="lineno">15</span><span class="line"><span class="comment">//. While non-rational curves are not sufficient to represent a circle,</span></span>
<a id="line16"></a><span class="lineno">16</span><span class="line"><span class="comment">//. this is one of many sets of NURBS control points for an almost uniformly </span></span>
<a id="line17"></a><span class="lineno">17</span><span class="line"><span class="comment">//. parameterized circle:</span></span>
<a id="line18"></a><span class="lineno">18</span><span class="line"><span class="comment">//.</span></span>
<a id="line19"></a><span class="lineno">19</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line20"></a><span class="lineno">20</span><span class="line"><span class="comment">//. |x |  y | weight      |</span></span>
<a id="line21"></a><span class="lineno">21</span><span class="line"><span class="comment">//. +==+====+=============+</span></span>
<a id="line22"></a><span class="lineno">22</span><span class="line"><span class="comment">//. |1 |  0 | 1           |</span></span>
<a id="line23"></a><span class="lineno">23</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line24"></a><span class="lineno">24</span><span class="line"><span class="comment">//. |1 |  1 | `sqrt(2)/2` |</span></span>
<a id="line25"></a><span class="lineno">25</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line26"></a><span class="lineno">26</span><span class="line"><span class="comment">//. |0 |  1 | 1           |</span></span>
<a id="line27"></a><span class="lineno">27</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line28"></a><span class="lineno">28</span><span class="line"><span class="comment">//. |-1|  1 | `sqrt(2)/2` |</span></span>
<a id="line29"></a><span class="lineno">29</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line30"></a><span class="lineno">30</span><span class="line"><span class="comment">//. |-1|  0 | 1           |</span></span>
<a id="line31"></a><span class="lineno">31</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line32"></a><span class="lineno">32</span><span class="line"><span class="comment">//. |-1| -1 | `sqrt(2)/2` |</span></span>
<a id="line33"></a><span class="lineno">33</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line34"></a><span class="lineno">34</span><span class="line"><span class="comment">//. |0 | -1 | 1           |</span></span>
<a id="line35"></a><span class="lineno">35</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line36"></a><span class="lineno">36</span><span class="line"><span class="comment">//. |1 | -1 | `sqrt(2)/2` |</span></span>
<a id="line37"></a><span class="lineno">37</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line38"></a><span class="lineno">38</span><span class="line"><span class="comment">//. |1 |  0 | 1           |</span></span>
<a id="line39"></a><span class="lineno">39</span><span class="line"><span class="comment">//. +--+----+-------------+</span></span>
<a id="line40"></a><span class="lineno">40</span><span class="line"><span class="comment">//.</span></span>
<a id="line41"></a><span class="lineno">41</span><span class="line"><span class="comment">//. The order is three, the knot vector is {0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4}.</span></span>
<a id="line42"></a><span class="lineno">42</span><span class="line"><span class="comment">//. It should be noted that the circle is composed of four quarter circles,</span></span>
<a id="line43"></a><span class="lineno">43</span><span class="line"><span class="comment">//. tied together with double knots. Although double knots in a third order NURBS</span></span>
<a id="line44"></a><span class="lineno">44</span><span class="line"><span class="comment">//. curve would normally result in loss of continuity in the first derivative,</span></span>
<a id="line45"></a><span class="lineno">45</span><span class="line"><span class="comment">//. the control points are positioned in such a way that the first derivative is continuous.</span></span>
<a id="line46"></a><span class="lineno">46</span><span class="line"><span class="comment">//. (From Wikipedia_ )</span></span>
<a id="line47"></a><span class="lineno">47</span><span class="line"><span class="comment">//.</span></span>
<a id="line48"></a><span class="lineno">48</span><span class="line"><span class="comment">//. .. _Wikipedia: http://en.wikipedia.org/wiki/NURBS</span></span>
<a id="line49"></a><span class="lineno">49</span><span class="line"><span class="comment">//.</span></span>
<a id="line50"></a><span class="lineno">50</span><span class="line"><span class="comment">//. Example::</span></span>
<a id="line51"></a><span class="lineno">51</span><span class="line"><span class="comment">//.</span></span>
<a id="line52"></a><span class="lineno">52</span><span class="line"><span class="comment">//.   Nurbs&lt;3&gt; circle;</span></span>
<a id="line53"></a><span class="lineno">53</span><span class="line"><span class="comment">//.   circle.insert_control_point(0, Vertex(1., 0.), 1.);</span></span>
<a id="line54"></a><span class="lineno">54</span><span class="line"><span class="comment">//.   circle.insert_control_point(0, Vertex(1., 1.), sqrt(2.)/2.);</span></span>
<a id="line55"></a><span class="lineno">55</span><span class="line"><span class="comment">//.   ...</span></span>
<a id="line56"></a><span class="lineno">56</span><span class="line"><span class="comment">//.</span></span>
<a id="line57"></a><span class="lineno">57</span><span class="line">template &lt;size_t Order&gt;</span>
<a id="line58"></a><span class="lineno">58</span><span class="line"><span class="keyword">class</span> <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths%3A%3ANurbs" title="class Paths::Nurbs">Nurbs</a> : <span class="keyword">public</span> <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Path" title="class Path">Path</a></span>
<a id="line59"></a><span class="lineno">59</span><span class="line">{</span>
<a id="line60"></a><span class="lineno">60</span><span class="line"><span class="keyword">public</span>:</span>
<a id="line61"></a><span class="lineno">61</span><span class="line">  <span class="comment">//. Create a new Nurbs curve.</span></span>
<a id="line62"></a><span class="lineno">62</span><span class="line">  <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths%3A%3ANurbs%3A%3ANurbs%28%29" title="member function Paths::Nurbs::Nurbs()">Nurbs</a>();</span>
<a id="line63"></a><span class="lineno">63</span><span class="line">  <span class="comment">//. Inserts a control point with the given weight.</span></span>
<a id="line64"></a><span class="lineno">64</span><span class="line"><span class="comment">  //. The knot value determines the position in the sequence.</span></span>
<a id="line65"></a><span class="lineno">65</span><span class="line"><span class="comment">  //.</span></span>
<a id="line66"></a><span class="lineno">66</span><span class="line"><span class="comment">  //. Parameters:</span></span>
<a id="line67"></a><span class="lineno">67</span><span class="line"><span class="comment">  //.   :knot: the parameter value at which to insert a new knot</span></span>
<a id="line68"></a><span class="lineno">68</span><span class="line"><span class="comment">  //.   :vertex: the control point</span></span>
<a id="line69"></a><span class="lineno">69</span><span class="line"><span class="comment">  //.   :weight: the weight of the control point</span></span>
<a id="line70"></a><span class="lineno">70</span><span class="line">  <span class="keyword">void</span> <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths%3A%3ANurbs%3A%3Ainsert_control_point%28double%2Cconst%20Vertex%26%2Cdouble%29" title="member function Paths::Nurbs::insert_control_point(double,const Vertex&amp;,double)">insert_control_point</a>(<span class="keyword">double</span> knot, <span class="keyword">const</span> <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Vertex" title="struct Vertex">Vertex</a> &amp;vertex,</span>
<a id="line71"></a><span class="lineno">71</span><span class="line">                            <span class="keyword">double</span> weight);</span>
<a id="line72"></a><span class="lineno">72</span><span class="line">  virtual <span class="keyword">void</span> <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths%3A%3ANurbs%3A%3Adraw%28%29" title="member function Paths::Nurbs::draw()">draw</a>();</span>
<a id="line73"></a><span class="lineno">73</span><span class="line"><span class="keyword">private</span>:</span>
<a id="line74"></a><span class="lineno">74</span><span class="line">  <span class="comment">//. The data...</span></span>
<a id="line75"></a><span class="lineno">75</span><span class="line">  std::<a href="http://localhost:8000/sxr/ident?full=1&amp;string=std%3A%3Avector" title="class std::vector">vector</a>&lt;<a href="http://localhost:8000/sxr/ident?full=1&amp;string=Vertex" title="struct Vertex">Vertex</a>&gt; <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths%3A%3ANurbs%3A%3Acontrols_" title="data member Paths::Nurbs::controls_">controls_</a>;</span>
<a id="line76"></a><span class="lineno">76</span><span class="line">  std::<a href="http://localhost:8000/sxr/ident?full=1&amp;string=std%3A%3Avector" title="class std::vector">vector</a>&lt;<span class="keyword">double</span>&gt; <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths%3A%3ANurbs%3A%3Aweights_" title="data member Paths::Nurbs::weights_">weights_</a>;</span>
<a id="line77"></a><span class="lineno">77</span><span class="line">  std::<a href="http://localhost:8000/sxr/ident?full=1&amp;string=std%3A%3Avector" title="class std::vector">vector</a>&lt;<span class="keyword">double</span>&gt; <a href="http://localhost:8000/sxr/ident?full=1&amp;string=Paths%3A%3ANurbs%3A%3Aknots_" title="data member Paths::Nurbs::knots_">knots_</a>;</span>
<a id="line78"></a><span class="lineno">78</span><span class="line">};</span>
<a id="line79"></a><span class="lineno">79</span>
<a id="line80"></a><span class="lineno">80</span><span class="line">}</span>
<a id="line81"></a><span class="lineno">81</span>
<a id="line82"></a><span class="lineno">82</span><span class="line">#endif</span>
</pre>
<div class="logo">Generated on Fri Apr 17 08:48:15 2009 by 
<br/>
<a href="http://synopsis.fresco.org" ><img src="../synopsis.png" alt="logo"/> synopsis</a> (version devel)</div>
  </body>
</html>