<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <!-- Scopes/Paths/Nurbs.html --> <!-- this view was generated by Scope --> <head> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"/> <title >Synopsis - Paths::Nurbs</title> <link href="../../style.css" type="text/css" rel="stylesheet" /> </head> <body class="Scope"> <div class="navigation"> <span class="normal"><a href="../global.html" >Global Namespace</a></span> <span class="normal"><a href="../../InheritanceTree.html" >Inheritance Tree</a></span> <span class="normal"><a href="../../InheritanceGraph.html" >Inheritance Graph</a></span> <span class="normal"><a href="../../NameIndex.html" >Name Index</a></span> </div> <!-- this part was generated by Heading --> <div class="class-module">namespace <a href="../Paths.html" >Paths</a> </div><div class="class-template">template <size_t <span class="variable">Order</span>></div><div class="class-name">class Nurbs </div><div class="links"><div class="file">File: <a href="../../File/Nurbs.h.html" target="detail">Nurbs.h</a></div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line58" ><img src="../../src-c++.png" alt="source code"/></a></div></div> <img alt="Nurbs-inheritance" src="Nurbs-inheritance.png" hspace="8" vspace="8" border="0" usemap="#Nurbs-inheritance_map" /> <map name="Nurbs-inheritance_map"><area alt="Scopes/Path.html" href="../Path.html" shape="rect" coords="29, 7, 75, 31" /> </map> <div class="doc"><p>The Nurbs class. It implements a nurbs curve for the given order. It is a very powerful and flexible curve representation. For simpler cases you may prefer to use a <a class="reference" href="Bezier.html">Bezier</a> curve.</p> <p>While non-rational curves are not sufficient to represent a circle, this is one of many sets of NURBS control points for an almost uniformly parameterized circle:</p> <table border="1" class="docutils"> <colgroup> <col width="11%" /> <col width="21%" /> <col width="68%" /> </colgroup> <thead valign="bottom"> <tr><th class="head">x</th> <th class="head">y</th> <th class="head">weight</th> </tr> </thead> <tbody valign="top"> <tr><td>1</td> <td>0</td> <td>1</td> </tr> <tr><td>1</td> <td>1</td> <td><em>sqrt(2)/2</em></td> </tr> <tr><td>0</td> <td>1</td> <td>1</td> </tr> <tr><td>-1</td> <td>1</td> <td><em>sqrt(2)/2</em></td> </tr> <tr><td>-1</td> <td>0</td> <td>1</td> </tr> <tr><td>-1</td> <td>-1</td> <td><em>sqrt(2)/2</em></td> </tr> <tr><td>0</td> <td>-1</td> <td>1</td> </tr> <tr><td>1</td> <td>-1</td> <td><em>sqrt(2)/2</em></td> </tr> <tr><td>1</td> <td>0</td> <td>1</td> </tr> </tbody> </table> <p>The order is three, the knot vector is {0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4}. It should be noted that the circle is composed of four quarter circles, tied together with double knots. Although double knots in a third order NURBS curve would normally result in loss of continuity in the first derivative, the control points are positioned in such a way that the first derivative is continuous. (From <a class="reference" href="http://en.wikipedia.org/wiki/NURBS">Wikipedia</a> )</p> <p>Example:</p> <pre class="literal-block"> Nurbs<3> circle; circle.insert_control_point(0, Vertex(1., 0.), 1.); circle.insert_control_point(0, Vertex(1., 1.), sqrt(2.)/2.); ... </pre> </div> <!-- this part was generated by Summary --> <div class="summary"> <div class="heading">Public Member functions Summary:</div> <div class="item"><div class="synopsis"> <i>constructor</i> <span class="name"><a href="Nurbs.html#Nurbs_l_r" >Nurbs</a></span>() </div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_mNurbs_l_r" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line62" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"><p>Create a new Nurbs curve.</p> </div></div> <div class="item"><div class="synopsis"> void <span class="name"><a href="Nurbs.html#insert_control_point_ldouble_cconst.Vertex_A_cdouble_r" >insert_control_point</a></span>(double <span class="variable">knot</span>, const <a href="../Vertex.html" >Vertex</a>& <span class="variable">vertex</span>, double <span class="variable">weight</span>) </div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_minsert_control_point_ldouble_cconst.Vertex_A_cdouble_r" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line71" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"><p>Inserts a control point with the given weight.</p> </div></div> <div class="item"><div class="synopsis"><span class="keyword">virtual</span> void <a class="name" id="draw_l_r">draw</a>() </div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_mdraw_l_r" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line72" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"></div></div> </div><!-- summary --> <div class="summary"> <div class="heading">Private Data members Summary:</div> <div class="item"><div class="synopsis">std::vector<<a href="../Vertex.html" >Vertex</a>> <span class="name"><a href="Nurbs.html#controls_" >controls_</a></span></div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_mcontrols_" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line75" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"><p>The data...</p> </div></div> <div class="item"><div class="synopsis">std::vector<double> <a class="name" id="weights_">weights_</a></div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_mweights_" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line76" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"></div></div> <div class="item"><div class="synopsis">std::vector<double> <a class="name" id="knots_">knots_</a></div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_mknots_" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line77" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"></div></div> </div><!-- summary --> <!-- this part was generated by Inheritance --> <!-- this part was generated by Detail --> <div class="detail"> <div class="heading">Public Member functions Details:</div> <div class="item"><div class="synopsis"> <i>constructor</i> <a class="name" id="Nurbs_l_r">Nurbs</a>() </div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_mNurbs_l_r" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line62" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"><p>Create a new Nurbs curve.</p> </div></div> <div class="item"><div class="synopsis"> void <a class="name" id="insert_control_point_ldouble_cconst.Vertex_A_cdouble_r">insert_control_point</a>(double <span class="variable">knot</span>, const <a href="../Vertex.html" >Vertex</a>& <span class="variable">vertex</span>, double <span class="variable">weight</span>) </div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_minsert_control_point_ldouble_cconst.Vertex_A_cdouble_r" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line71" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"><p>Inserts a control point with the given weight. The knot value determines the position in the sequence.</p> <dl class="docutils"> <dt>Parameters:</dt> <dd><table class="first last docutils field-list" frame="void" rules="none"> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> <tr class="field"><th class="field-name">knot:</th><td class="field-body">the parameter value at which to insert a new knot</td> </tr> <tr class="field"><th class="field-name">vertex:</th><td class="field-body">the control point</td> </tr> <tr class="field"><th class="field-name">weight:</th><td class="field-body">the weight of the control point</td> </tr> </tbody> </table> </dd> </dl> </div></div> </div><!-- detail --> <div class="detail"> <div class="heading">Private Data members Details:</div> <div class="item"><div class="synopsis">std::vector<<a href="../Vertex.html" >Vertex</a>> <a class="name" id="controls_">controls_</a></div> <div class="xref"><a href="../../XRef/xref0.html#Paths_mNurbs_mcontrols_" ><img src="../../xref.png" alt="references"/></a></div> <div class="source"><a href="../../Source/Nurbs.h.html#line75" ><img src="../../src-c++.png" alt="source code"/></a></div> <div class="doc"><p>The data...</p> </div></div> </div><!-- detail --> <div class="logo">Generated on Fri Apr 17 08:48:13 2009 by <br/> <a href="http://synopsis.fresco.org" target="_blank"><img src="../../synopsis.png" alt="logo"/> synopsis</a> (version devel)</div> </body> </html>