Files
opennurbs/6/d4/d5a/class_o_n___curve.html
Bozo 832ccb5c1a Publish!
Generated from v6.0.11315.11111-test14
2018-02-03 11:08:49 -08:00

3168 lines
246 KiB
HTML

<!-- HTML header for doxygen 1.8.13-->
<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>openNURBS SDK Help: ON_Curve Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<!-- <script type="text/javascript" src="../../jquery.js"></script> -->
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../customdoxygen.css" rel="stylesheet" type="text/css"/>
<!-- bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- smartmenus -->
<link href="../../jquery.smartmenus.bootstrap.css" rel="stylesheet">
<script type="text/javascript" src="../../jquery.smartmenus.js"></script>
<script type="text/javascript" src="../../jquery.smartmenus.bootstrap.js"></script>
</head>
<body>
<!-- <div class="version-banner">
Go back to the <a href="/">main site</a>...
</div> -->
<div class="container">
<!-- navbar -->
<nav class="navbar navbar-default">
<div class="container-fluid">
<a class="navbar-brand" href="#">openNURBS SDK Help</a>
<div class="navbar-collapse collapse" id="main-nav-placeholder">
<!-- <p class="navbar-text navbar-right">v6.0</p> -->
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a class="dropdown-toggle" href="#">v6.0 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Latest (6.x)</a></li>
<li class="disabled"><a href="#">WIP (7.x)</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div class="page-content">
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="../../df/ddb/class_o_n___curve-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ON_Curve Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> is a pure virtual class for curve objects
<a href="../../d4/d5a/class_o_n___curve.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../d7/d4f/opennurbs__curve_8h_source.html">opennurbs_curve.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ON_Curve:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d4/d5a/class_o_n___curve.png" usemap="#ON_5FCurve_map" alt=""/>
<map id="ON_5FCurve_map" name="ON_5FCurve_map">
<area href="../../df/de0/class_o_n___geometry.html" title="Base class for all geometry classes that must provide runtime class id. Provides interface for common..." alt="ON_Geometry" shape="rect" coords="450,56,590,80"/>
<area href="../../d9/d7b/class_o_n___object.html" title="Pure virtual base class for all classes that must provide runtime class id or support object level 3D..." alt="ON_Object" shape="rect" coords="450,0,590,24"/>
<area href="../../dc/d83/class_o_n___arc_curve.html" title="ON_ArcCurve is used to represent arcs and circles. ON_ArcCurve.IsCircle() returns true if the curve i..." alt="ON_ArcCurve" shape="rect" coords="0,168,140,192"/>
<area href="../../d5/d1a/class_o_n___curve_on_surface.html" alt="ON_CurveOnSurface" shape="rect" coords="150,168,290,192"/>
<area href="../../dc/dda/class_o_n___curve_proxy.html" alt="ON_CurveProxy" shape="rect" coords="300,168,440,192"/>
<area href="../../d0/ddd/class_o_n___line_curve.html" alt="ON_LineCurve" shape="rect" coords="450,168,590,192"/>
<area href="../../d3/d6a/class_o_n___nurbs_curve.html" alt="ON_NurbsCurve" shape="rect" coords="600,168,740,192"/>
<area href="../../d8/d00/class_o_n___poly_curve.html" title="An ON_PolyCurve is an ON_Curve represented by a sequence of contiguous ON_Curve segments. A valid polycurve is represented by an array m_segment of Count()&gt;=1 curve objects and a strictly increasing array m_t of Count()+1 parameter values. The i-th curve segment, when considered as part of the polycurve, is affinely reparamaterized from m_t[i] to m_t[i+1], i.e., m_segment[i].Domain()[0] is mapped to m_t[i] and m_segment[i].Domain()[1] is mapped to m_t[i+1]. " alt="ON_PolyCurve" shape="rect" coords="750,168,890,192"/>
<area href="../../d8/d6f/class_o_n___polyline_curve.html" alt="ON_PolylineCurve" shape="rect" coords="900,168,1040,192"/>
<area href="../../dd/de8/class_o_n___brep_edge.html" title="Brep edge information is stored in ON_BrepEdge classes. ON_Brep.m_E[] is an array of all the edges in..." alt="ON_BrepEdge" shape="rect" coords="150,224,290,248"/>
<area href="../../d3/dac/class_o_n___brep_trim.html" title="Brep trim information is stored in ON_BrepTrim classes. ON_Brep.m_T[] is an array of all the trim in ..." alt="ON_BrepTrim" shape="rect" coords="300,224,440,248"/>
<area href="../../d8/db7/class_o_n___poly_edge_segment.html" alt="ON_PolyEdgeSegment" shape="rect" coords="450,224,590,248"/>
<area href="../../d6/d10/class_o_n___poly_edge_curve.html" alt="ON_PolyEdgeCurve" shape="rect" coords="750,224,890,248"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4e9b9fd633926e0edb1fe52099fe2130"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a4e9b9fd633926e0edb1fe52099fe2130">ON_Curve</a> () ON_NOEXCEPT</td></tr>
<tr class="separator:a4e9b9fd633926e0edb1fe52099fe2130"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42282f1334a661f2ab4d3ddf93bcefd4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a42282f1334a661f2ab4d3ddf93bcefd4">ON_Curve</a> (const <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> &amp;)</td></tr>
<tr class="separator:a42282f1334a661f2ab4d3ddf93bcefd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c0d8b8b7a5b797feca3becb8842b360"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a7c0d8b8b7a5b797feca3becb8842b360">~ON_Curve</a> ()</td></tr>
<tr class="separator:a7c0d8b8b7a5b797feca3becb8842b360"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadf0546a6f3b286a670217caf0abbd7b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#aadf0546a6f3b286a670217caf0abbd7b">ChangeClosedCurveSeam</a> (double t)</td></tr>
<tr class="memdesc:aadf0546a6f3b286a670217caf0abbd7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this curve is closed, then modify it so that the start/end point is at curve parameter t. <a href="#aadf0546a6f3b286a670217caf0abbd7b">More...</a><br /></td></tr>
<tr class="separator:aadf0546a6f3b286a670217caf0abbd7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd112f88c48651e238649201743bc692"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#abd112f88c48651e238649201743bc692">ChangeDimension</a> (int desired_dimension)</td></tr>
<tr class="memdesc:abd112f88c48651e238649201743bc692"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change the dimension of a curve. <a href="#abd112f88c48651e238649201743bc692">More...</a><br /></td></tr>
<tr class="separator:abd112f88c48651e238649201743bc692"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91ad780521ca0c126603533731882dc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a91ad780521ca0c126603533731882dc2">CurvatureAt</a> (double t) const</td></tr>
<tr class="memdesc:a91ad780521ca0c126603533731882dc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate the curvature vector at a parameter. <a href="#a91ad780521ca0c126603533731882dc2">More...</a><br /></td></tr>
<tr class="separator:a91ad780521ca0c126603533731882dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c1b90bd24333d58d584016e3b40225d"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a3c1b90bd24333d58d584016e3b40225d">Degree</a> () const =0</td></tr>
<tr class="memdesc:a3c1b90bd24333d58d584016e3b40225d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns maximum algebraic degree of any span or a good estimate if curve spans are not algebraic. <a href="#a3c1b90bd24333d58d584016e3b40225d">More...</a><br /></td></tr>
<tr class="separator:a3c1b90bd24333d58d584016e3b40225d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14427359a417f8713b9910f29b8dd302"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a14427359a417f8713b9910f29b8dd302">DerivativeAt</a> (double t) const</td></tr>
<tr class="memdesc:a14427359a417f8713b9910f29b8dd302"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate first derivative at a parameter. <a href="#a14427359a417f8713b9910f29b8dd302">More...</a><br /></td></tr>
<tr class="separator:a14427359a417f8713b9910f29b8dd302"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a1d3ccd2a60f2ed3f06c864ee263429"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a5a1d3ccd2a60f2ed3f06c864ee263429">DestroyCurveTree</a> ()</td></tr>
<tr class="memdesc:a5a1d3ccd2a60f2ed3f06c864ee263429"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the runtime curve tree used to speed closest point and intersection calcuations. <a href="#a5a1d3ccd2a60f2ed3f06c864ee263429">More...</a><br /></td></tr>
<tr class="separator:a5a1d3ccd2a60f2ed3f06c864ee263429"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ad9a73ad53707fbebfc904e772f605b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a4ad9a73ad53707fbebfc904e772f605b">DestroyRuntimeCache</a> (bool bDelete=true) override</td></tr>
<tr class="memdesc:a4ad9a73ad53707fbebfc904e772f605b"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual <a class="el" href="../../d9/d7b/class_o_n___object.html#af8435c33ab53af41c22dac75e8917569" title="Expert user function. If you are using openNURBS in its default configuration to read and write 3dm a...">ON_Object::DestroyRuntimeCache</a> override <a href="#a4ad9a73ad53707fbebfc904e772f605b">More...</a><br /></td></tr>
<tr class="separator:a4ad9a73ad53707fbebfc904e772f605b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3a1e3ea7c924246a43754aa03790432"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ae3a1e3ea7c924246a43754aa03790432">Domain</a> () const =0</td></tr>
<tr class="separator:ae3a1e3ea7c924246a43754aa03790432"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1b9d5f72971851b4790f4f47d51a846"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ab1b9d5f72971851b4790f4f47d51a846">DuplicateCurve</a> () const</td></tr>
<tr class="memdesc:ab1b9d5f72971851b4790f4f47d51a846"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a duplicate of the curve. <a href="#ab1b9d5f72971851b4790f4f47d51a846">More...</a><br /></td></tr>
<tr class="separator:ab1b9d5f72971851b4790f4f47d51a846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37944a7a4d1c3d7e28afcbc9184ef799"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a37944a7a4d1c3d7e28afcbc9184ef799">Ev1Der</a> (double t, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;point, <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;first_derivative, int side=0, int *hint=0) const</td></tr>
<tr class="memdesc:a37944a7a4d1c3d7e28afcbc9184ef799"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate first derivative at a parameter with error checking. <a href="#a37944a7a4d1c3d7e28afcbc9184ef799">More...</a><br /></td></tr>
<tr class="separator:a37944a7a4d1c3d7e28afcbc9184ef799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1388f1ac523a1e8abca222eab2d4ce7a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a1388f1ac523a1e8abca222eab2d4ce7a">Ev2Der</a> (double t, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;point, <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;first_derivative, <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;second_derivative, int side=0, int *hint=0) const</td></tr>
<tr class="memdesc:a1388f1ac523a1e8abca222eab2d4ce7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate second derivative at a parameter with error checking. <a href="#a1388f1ac523a1e8abca222eab2d4ce7a">More...</a><br /></td></tr>
<tr class="separator:a1388f1ac523a1e8abca222eab2d4ce7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb8caa121873abcf53f050a8953a70bb"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#acb8caa121873abcf53f050a8953a70bb">Evaluate</a> (double t, int der_count, int v_stride, double *v, int side=0, int *hint=0) const =0</td></tr>
<tr class="memdesc:acb8caa121873abcf53f050a8953a70bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">This evaluator actually does all the work. The other <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> evaluation tools call this virtual function. <a href="#acb8caa121873abcf53f050a8953a70bb">More...</a><br /></td></tr>
<tr class="separator:acb8caa121873abcf53f050a8953a70bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad625501436509ff71c9fa21778ad2459"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ad625501436509ff71c9fa21778ad2459">EvaluatePoint</a> (const class <a class="el" href="../../d3/d80/class_o_n___obj_ref.html">ON_ObjRef</a> &amp;objref, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;P) const override</td></tr>
<tr class="memdesc:ad625501436509ff71c9fa21778ad2459"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual <a class="el" href="../../df/de0/class_o_n___geometry.html" title="Base class for all geometry classes that must provide runtime class id. Provides interface for common...">ON_Geometry</a> override <a href="#ad625501436509ff71c9fa21778ad2459">More...</a><br /></td></tr>
<tr class="separator:ad625501436509ff71c9fa21778ad2459"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affcb2a2551d248110c8e0dc610e6a9b1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#affcb2a2551d248110c8e0dc610e6a9b1">EvCurvature</a> (double t, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;point, <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;tangent, <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;kappa, int side=0, int *hint=0) const</td></tr>
<tr class="memdesc:affcb2a2551d248110c8e0dc610e6a9b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate unit tangent and curvature at a parameter with error checking. <a href="#affcb2a2551d248110c8e0dc610e6a9b1">More...</a><br /></td></tr>
<tr class="separator:affcb2a2551d248110c8e0dc610e6a9b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82170503403c1f8c84286619f6179ead"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a82170503403c1f8c84286619f6179ead">EvPoint</a> (double t, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;point, int side=0, int *hint=0) const</td></tr>
<tr class="memdesc:a82170503403c1f8c84286619f6179ead"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate point at a parameter with error checking. <a href="#a82170503403c1f8c84286619f6179ead">More...</a><br /></td></tr>
<tr class="separator:a82170503403c1f8c84286619f6179ead"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e223877e0a89d31e0ed404625db70ef"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a4e223877e0a89d31e0ed404625db70ef">EvTangent</a> (double t, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;point, <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;tangent, int side=0, int *hint=0) const</td></tr>
<tr class="memdesc:a4e223877e0a89d31e0ed404625db70ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate unit tangent at a parameter with error checking. <a href="#a4e223877e0a89d31e0ed404625db70ef">More...</a><br /></td></tr>
<tr class="separator:a4e223877e0a89d31e0ed404625db70ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad590804af708aa05f56c27b6b3982ef7"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ad590804af708aa05f56c27b6b3982ef7">Extend</a> (const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> &amp;domain)</td></tr>
<tr class="memdesc:ad590804af708aa05f56c27b6b3982ef7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pure virtual function. Default returns false. Where possible, analytically extends curve to include domain. <a href="#ad590804af708aa05f56c27b6b3982ef7">More...</a><br /></td></tr>
<tr class="separator:ad590804af708aa05f56c27b6b3982ef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfb31835869e2633469c36eca4a08e9b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#acfb31835869e2633469c36eca4a08e9b">FirstSpanIsLinear</a> (double min_length, double tolerance) const</td></tr>
<tr class="separator:acfb31835869e2633469c36eca4a08e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85aa9ee2224714bc466f0bedaa569410"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a85aa9ee2224714bc466f0bedaa569410">FirstSpanIsLinear</a> (double min_length, double tolerance, <a class="el" href="../../d4/d6f/class_o_n___line.html">ON_Line</a> *span_line) const</td></tr>
<tr class="separator:a85aa9ee2224714bc466f0bedaa569410"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6cf4d04b6fe809e888d9bd3c32038a4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#aa6cf4d04b6fe809e888d9bd3c32038a4">FrameAt</a> (double t, <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;plane) const</td></tr>
<tr class="memdesc:aa6cf4d04b6fe809e888d9bd3c32038a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a 3d frame at a parameter. <a href="#aa6cf4d04b6fe809e888d9bd3c32038a4">More...</a><br /></td></tr>
<tr class="separator:aa6cf4d04b6fe809e888d9bd3c32038a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad64be6b1a263a59bfc740199d6de8ace"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ad64be6b1a263a59bfc740199d6de8ace">GetCurveParameterFromNurbFormParameter</a> (double nurbs_t, double *curve_t) const</td></tr>
<tr class="memdesc:ad64be6b1a263a59bfc740199d6de8ace"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a NURBS curve parameter to a curve parameter <a href="#ad64be6b1a263a59bfc740199d6de8ace">More...</a><br /></td></tr>
<tr class="separator:ad64be6b1a263a59bfc740199d6de8ace"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36d4d80c58ea92dde6a1298ed8141a66"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a36d4d80c58ea92dde6a1298ed8141a66">GetDomain</a> (double *t0, double *t1) const</td></tr>
<tr class="memdesc:a36d4d80c58ea92dde6a1298ed8141a66"><td class="mdescLeft">&#160;</td><td class="mdescRight">curve interface <a href="#a36d4d80c58ea92dde6a1298ed8141a66">More...</a><br /></td></tr>
<tr class="separator:a36d4d80c58ea92dde6a1298ed8141a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2deaf514586ac4b16daa45a97d4bd8e1"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a2deaf514586ac4b16daa45a97d4bd8e1">GetNextDiscontinuity</a> (ON::continuity c, double t0, double t1, double *t, int *hint=nullptr, int *dtype=nullptr, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const</td></tr>
<tr class="memdesc:a2deaf514586ac4b16daa45a97d4bd8e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for a derivatitive, tangent, or curvature discontinuity. <a href="#a2deaf514586ac4b16daa45a97d4bd8e1">More...</a><br /></td></tr>
<tr class="separator:a2deaf514586ac4b16daa45a97d4bd8e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67dd944c24cda3d319fa5ac73bb95c2e"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a67dd944c24cda3d319fa5ac73bb95c2e">GetNurbForm</a> (<a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a> &amp;nurbs_curve, double tolerance=0.0, const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> *subdomain=nullptr) const</td></tr>
<tr class="memdesc:a67dd944c24cda3d319fa5ac73bb95c2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a NURBS curve representation of this curve. <a href="#a67dd944c24cda3d319fa5ac73bb95c2e">More...</a><br /></td></tr>
<tr class="separator:a67dd944c24cda3d319fa5ac73bb95c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3ed534f071a515ea5270acf2a04e6e7"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ae3ed534f071a515ea5270acf2a04e6e7">GetNurbFormParameterFromCurveParameter</a> (double curve_t, double *nurbs_t) const</td></tr>
<tr class="memdesc:ae3ed534f071a515ea5270acf2a04e6e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a curve parameter to a NURBS curve parameter. <a href="#ae3ed534f071a515ea5270acf2a04e6e7">More...</a><br /></td></tr>
<tr class="separator:ae3ed534f071a515ea5270acf2a04e6e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada3a3e9951cc02187a6a9a0e715e70e0"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ada3a3e9951cc02187a6a9a0e715e70e0">GetParameterTolerance</a> (double t, double *tminus, double *tplus) const</td></tr>
<tr class="memdesc:ada3a3e9951cc02187a6a9a0e715e70e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns maximum algebraic degree of any span or a good estimate if curve spans are not algebraic. <a href="#ada3a3e9951cc02187a6a9a0e715e70e0">More...</a><br /></td></tr>
<tr class="separator:ada3a3e9951cc02187a6a9a0e715e70e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae619c78b795518c251c5ac32d34d568f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ae619c78b795518c251c5ac32d34d568f">GetSpanVector</a> (double *knots) const =0</td></tr>
<tr class="memdesc:ae619c78b795518c251c5ac32d34d568f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get number of parameters of "knots". <a href="#ae619c78b795518c251c5ac32d34d568f">More...</a><br /></td></tr>
<tr class="separator:ae619c78b795518c251c5ac32d34d568f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cbd5def723c9174ed88f9ca4db60c62"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a4cbd5def723c9174ed88f9ca4db60c62">GetSpanVectorIndex</a> (double t, int side, int *span_vector_index, <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> *span_domain) const</td></tr>
<tr class="separator:a4cbd5def723c9174ed88f9ca4db60c62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07da6630700d2c2ce04f0bc3178b02b0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a07da6630700d2c2ce04f0bc3178b02b0">GetTightBoundingBox</a> (class <a class="el" href="../../d1/d17/class_o_n___bounding_box.html">ON_BoundingBox</a> &amp;tight_bbox, bool bGrowBox=false, const class <a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> *xform=nullptr) const override</td></tr>
<tr class="memdesc:a07da6630700d2c2ce04f0bc3178b02b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual <a class="el" href="../../df/de0/class_o_n___geometry.html" title="Base class for all geometry classes that must provide runtime class id. Provides interface for common...">ON_Geometry</a> GetTightBoundingBox override <a href="#a07da6630700d2c2ce04f0bc3178b02b0">More...</a><br /></td></tr>
<tr class="separator:a07da6630700d2c2ce04f0bc3178b02b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25f556492601b4e679e8416cee60c529"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a25f556492601b4e679e8416cee60c529">HasNurbForm</a> () const</td></tr>
<tr class="memdesc:a25f556492601b4e679e8416cee60c529"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does a NURBS curve representation of this curve. <a href="#a25f556492601b4e679e8416cee60c529">More...</a><br /></td></tr>
<tr class="separator:a25f556492601b4e679e8416cee60c529"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb5f04bc1eb13842d60c7c9778740ca8"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#adb5f04bc1eb13842d60c7c9778740ca8">IsArc</a> (const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *plane=nullptr, <a class="el" href="../../d3/ddf/class_o_n___arc.html">ON_Arc</a> *arc=nullptr, double tolerance=ON_ZERO_TOLERANCE) const</td></tr>
<tr class="memdesc:adb5f04bc1eb13842d60c7c9778740ca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test a curve to see if the locus if its points is an arc or circle. <a href="#adb5f04bc1eb13842d60c7c9778740ca8">More...</a><br /></td></tr>
<tr class="separator:adb5f04bc1eb13842d60c7c9778740ca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cab622314d16eaf41182a427d5c36e6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a4cab622314d16eaf41182a427d5c36e6">IsArcAt</a> (double t, const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *plane=0, <a class="el" href="../../d3/ddf/class_o_n___arc.html">ON_Arc</a> *arc=0, double tolerance=ON_ZERO_TOLERANCE, double *t0=0, double *t1=0) const</td></tr>
<tr class="separator:a4cab622314d16eaf41182a427d5c36e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ba05cb9ae319f5723a43755fb9c2d3f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a0ba05cb9ae319f5723a43755fb9c2d3f">IsClosable</a> (double tolerance, double min_abs_size=0.0, double min_rel_size=10.0) const</td></tr>
<tr class="memdesc:a0ba05cb9ae319f5723a43755fb9c2d3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decide if it makes sense to close off this curve by moving the endpoint to the start based on start-end gap size and length of curve as approximated by chord defined by 6 points. <a href="#a0ba05cb9ae319f5723a43755fb9c2d3f">More...</a><br /></td></tr>
<tr class="separator:a0ba05cb9ae319f5723a43755fb9c2d3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8108d949eee27fb0ab7b2b4339df5b7f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a8108d949eee27fb0ab7b2b4339df5b7f">IsClosed</a> () const</td></tr>
<tr class="memdesc:a8108d949eee27fb0ab7b2b4339df5b7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test a curve to see if it is closed. <a href="#a8108d949eee27fb0ab7b2b4339df5b7f">More...</a><br /></td></tr>
<tr class="separator:a8108d949eee27fb0ab7b2b4339df5b7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0a69004a8792a80abb7c9ee19f98f6a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ac0a69004a8792a80abb7c9ee19f98f6a">IsContinuous</a> (ON::continuity c, double t, int *hint=nullptr, double point_tolerance=ON_ZERO_TOLERANCE, double d1_tolerance=ON_ZERO_TOLERANCE, double d2_tolerance=ON_ZERO_TOLERANCE, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const</td></tr>
<tr class="memdesc:ac0a69004a8792a80abb7c9ee19f98f6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test continuity at a curve parameter value. <a href="#ac0a69004a8792a80abb7c9ee19f98f6a">More...</a><br /></td></tr>
<tr class="separator:ac0a69004a8792a80abb7c9ee19f98f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7beb8c89aea4828ab40a009853416481"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a7beb8c89aea4828ab40a009853416481">IsEllipse</a> (const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *plane=nullptr, <a class="el" href="../../d6/dd8/class_o_n___ellipse.html">ON_Ellipse</a> *ellipse=nullptr, double tolerance=ON_ZERO_TOLERANCE) const</td></tr>
<tr class="separator:a7beb8c89aea4828ab40a009853416481"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c480c610e37703041d9eacb502d5ae8"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a7c480c610e37703041d9eacb502d5ae8">IsInPlane</a> (const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;test_plane, double tolerance=ON_ZERO_TOLERANCE) const =0</td></tr>
<tr class="memdesc:a7c480c610e37703041d9eacb502d5ae8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test a curve to see if it lies in a specific plane. <a href="#a7c480c610e37703041d9eacb502d5ae8">More...</a><br /></td></tr>
<tr class="separator:a7c480c610e37703041d9eacb502d5ae8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a325716a9735ab59416bf6800a23ce5fc"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a325716a9735ab59416bf6800a23ce5fc">IsLinear</a> (double tolerance=ON_ZERO_TOLERANCE) const</td></tr>
<tr class="memdesc:a325716a9735ab59416bf6800a23ce5fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test a curve to see if the locus if its points is a line segment. <a href="#a325716a9735ab59416bf6800a23ce5fc">More...</a><br /></td></tr>
<tr class="separator:a325716a9735ab59416bf6800a23ce5fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad27af42168a1be8f54fff24aed354aab"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ad27af42168a1be8f54fff24aed354aab">IsPeriodic</a> () const</td></tr>
<tr class="memdesc:ad27af42168a1be8f54fff24aed354aab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test a curve to see if it is periodic. <a href="#ad27af42168a1be8f54fff24aed354aab">More...</a><br /></td></tr>
<tr class="separator:ad27af42168a1be8f54fff24aed354aab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa98dcc86caf6da5cdac543e52d695bd4"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#aa98dcc86caf6da5cdac543e52d695bd4">IsPlanar</a> (<a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *plane=nullptr, double tolerance=ON_ZERO_TOLERANCE) const</td></tr>
<tr class="memdesc:aa98dcc86caf6da5cdac543e52d695bd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test a curve to see if it is planar. <a href="#aa98dcc86caf6da5cdac543e52d695bd4">More...</a><br /></td></tr>
<tr class="separator:aa98dcc86caf6da5cdac543e52d695bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a467d9a30eb67c198df47da3abc1a87cd"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a467d9a30eb67c198df47da3abc1a87cd">IsPolyline</a> (<a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &gt; *pline_points=nullptr, <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; double &gt; *pline_t=nullptr) const</td></tr>
<tr class="memdesc:a467d9a30eb67c198df47da3abc1a87cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Several types of <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> can have the form of a polyline including a degree 1 <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a>, an <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html">ON_PolylineCurve</a>, and an <a class="el" href="../../d8/d00/class_o_n___poly_curve.html" title="An ON_PolyCurve is an ON_Curve represented by a sequence of contiguous ON_Curve segments. A valid polycurve is represented by an array m_segment of Count()&gt;=1 curve objects and a strictly increasing array m_t of Count()+1 parameter values. The i-th curve segment, when considered as part of the polycurve, is affinely reparamaterized from m_t[i] to m_t[i+1], i.e., m_segment[i].Domain()[0] is mapped to m_t[i] and m_segment[i].Domain()[1] is mapped to m_t[i+1]. ">ON_PolyCurve</a> all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline. <a href="#a467d9a30eb67c198df47da3abc1a87cd">More...</a><br /></td></tr>
<tr class="separator:a467d9a30eb67c198df47da3abc1a87cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae26e3ac4106357457d997acd4a989307"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ae26e3ac4106357457d997acd4a989307">LastSpanIsLinear</a> (double min_length, double tolerance) const</td></tr>
<tr class="separator:ae26e3ac4106357457d997acd4a989307"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada7ec27d4ee0cfb4cecfc77a8d65e889"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ada7ec27d4ee0cfb4cecfc77a8d65e889">LastSpanIsLinear</a> (double min_length, double tolerance, <a class="el" href="../../d4/d6f/class_o_n___line.html">ON_Line</a> *span_line) const</td></tr>
<tr class="separator:ada7ec27d4ee0cfb4cecfc77a8d65e889"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a667f621c7004f9f44f0d68f2267b9a0b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a667f621c7004f9f44f0d68f2267b9a0b">NurbsCurve</a> (<a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a> *pNurbsCurve=nullptr, double tolerance=0.0, const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> *subdomain=nullptr) const</td></tr>
<tr class="memdesc:a667f621c7004f9f44f0d68f2267b9a0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a NURBS curve representation of this curve. <a href="#a667f621c7004f9f44f0d68f2267b9a0b">More...</a><br /></td></tr>
<tr class="separator:a667f621c7004f9f44f0d68f2267b9a0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a825d22c88fd23b1d684234fd3bf11254"><td class="memItemLeft" align="right" valign="top">ON::object_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a825d22c88fd23b1d684234fd3bf11254">ObjectType</a> () const override</td></tr>
<tr class="memdesc:a825d22c88fd23b1d684234fd3bf11254"><td class="mdescLeft">&#160;</td><td class="mdescRight">overrides virtual <a class="el" href="../../d9/d7b/class_o_n___object.html#afa19aee4a411a8fda53aff00bd02d86e" title="Useful for switch statements that need to differentiate between basic object types like points...">ON_Object::ObjectType</a>. <a href="#a825d22c88fd23b1d684234fd3bf11254">More...</a><br /></td></tr>
<tr class="separator:a825d22c88fd23b1d684234fd3bf11254"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91620c97b56aba376a763086efb4f817"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a91620c97b56aba376a763086efb4f817">operator=</a> (const <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> &amp;)</td></tr>
<tr class="separator:a91620c97b56aba376a763086efb4f817"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe5aefbc95ce86f017e69bf76cbbe03f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#abe5aefbc95ce86f017e69bf76cbbe03f">PointAt</a> (double t) const</td></tr>
<tr class="memdesc:abe5aefbc95ce86f017e69bf76cbbe03f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate point at a parameter. <a href="#abe5aefbc95ce86f017e69bf76cbbe03f">More...</a><br /></td></tr>
<tr class="separator:abe5aefbc95ce86f017e69bf76cbbe03f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24c02f50c0c7e0036c744a0e3c8b8f88"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a24c02f50c0c7e0036c744a0e3c8b8f88">PointAtEnd</a> () const</td></tr>
<tr class="memdesc:a24c02f50c0c7e0036c744a0e3c8b8f88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate point at the end of the curve. <a href="#a24c02f50c0c7e0036c744a0e3c8b8f88">More...</a><br /></td></tr>
<tr class="separator:a24c02f50c0c7e0036c744a0e3c8b8f88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd83649cbf4e749ac2613a058a6fe078"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#abd83649cbf4e749ac2613a058a6fe078">PointAtStart</a> () const</td></tr>
<tr class="memdesc:abd83649cbf4e749ac2613a058a6fe078"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate point at the start of the curve. <a href="#abd83649cbf4e749ac2613a058a6fe078">More...</a><br /></td></tr>
<tr class="separator:abd83649cbf4e749ac2613a058a6fe078"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a506b1c3a2ad743b87d5a4085fe3d0b1a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a506b1c3a2ad743b87d5a4085fe3d0b1a">Reverse</a> ()=0</td></tr>
<tr class="memdesc:a506b1c3a2ad743b87d5a4085fe3d0b1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse the direction of the curve. <a href="#a506b1c3a2ad743b87d5a4085fe3d0b1a">More...</a><br /></td></tr>
<tr class="separator:a506b1c3a2ad743b87d5a4085fe3d0b1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8dc771e7ebcfac85baf26c7e6b21c70"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ac8dc771e7ebcfac85baf26c7e6b21c70">SetDomain</a> (<a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> domain)</td></tr>
<tr class="memdesc:ac8dc771e7ebcfac85baf26c7e6b21c70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the domain of the curve. <a href="#ac8dc771e7ebcfac85baf26c7e6b21c70">More...</a><br /></td></tr>
<tr class="separator:ac8dc771e7ebcfac85baf26c7e6b21c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af327855ca0a4d977e6ebfb5b84ad2281"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#af327855ca0a4d977e6ebfb5b84ad2281">SetDomain</a> (double t0, double t1)</td></tr>
<tr class="memdesc:af327855ca0a4d977e6ebfb5b84ad2281"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the domain of the curve <a href="#af327855ca0a4d977e6ebfb5b84ad2281">More...</a><br /></td></tr>
<tr class="separator:af327855ca0a4d977e6ebfb5b84ad2281"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96e8ee83e56e84c16a14637fe48a42ee"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a96e8ee83e56e84c16a14637fe48a42ee">SetEndPoint</a> (<a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> end_point)</td></tr>
<tr class="memdesc:a96e8ee83e56e84c16a14637fe48a42ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force the curve to end at a specified point. <a href="#a96e8ee83e56e84c16a14637fe48a42ee">More...</a><br /></td></tr>
<tr class="separator:a96e8ee83e56e84c16a14637fe48a42ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6db85b7bd367cab86201db1a6b5a1b5"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ab6db85b7bd367cab86201db1a6b5a1b5">SetStartPoint</a> (<a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> start_point)</td></tr>
<tr class="memdesc:ab6db85b7bd367cab86201db1a6b5a1b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force the curve to start at a specified point. <a href="#ab6db85b7bd367cab86201db1a6b5a1b5">More...</a><br /></td></tr>
<tr class="separator:ab6db85b7bd367cab86201db1a6b5a1b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af13b163bb51b3972593f6ccf89d18950"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#af13b163bb51b3972593f6ccf89d18950">SizeOf</a> () const override</td></tr>
<tr class="memdesc:af13b163bb51b3972593f6ccf89d18950"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual <a class="el" href="../../d9/d7b/class_o_n___object.html#a0299df21bfed90d7b5bfb24cdcf5e6c1">ON_Object::SizeOf</a> override <a href="#af13b163bb51b3972593f6ccf89d18950">More...</a><br /></td></tr>
<tr class="separator:af13b163bb51b3972593f6ccf89d18950"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad162b90ba333e4f3dd5b13823e1b5f27"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ad162b90ba333e4f3dd5b13823e1b5f27">SpanCount</a> () const =0</td></tr>
<tr class="memdesc:ad162b90ba333e4f3dd5b13823e1b5f27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get number of nonempty smooth (c-infinity) spans in curve <a href="#ad162b90ba333e4f3dd5b13823e1b5f27">More...</a><br /></td></tr>
<tr class="separator:ad162b90ba333e4f3dd5b13823e1b5f27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d6c16e8ddfe8f2cde8c4431db67a337"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a2d6c16e8ddfe8f2cde8c4431db67a337">Split</a> (double t, <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> *&amp;left_side, <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> *&amp;right_side) const</td></tr>
<tr class="memdesc:a2d6c16e8ddfe8f2cde8c4431db67a337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Splits (divides) the curve at the specified parameter. The parameter must be in the interior of the curve's domain. The pointers passed to Split must either be nullptr or point to an <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> object of the same type. If the pointer is nullptr, then a curve will be created in <a class="el" href="../../d4/d5a/class_o_n___curve.html#a2d6c16e8ddfe8f2cde8c4431db67a337" title="Splits (divides) the curve at the specified parameter. The parameter must be in the interior of the c...">Split()</a>. You may pass "this" as left_side or right_side. <a href="#a2d6c16e8ddfe8f2cde8c4431db67a337">More...</a><br /></td></tr>
<tr class="separator:a2d6c16e8ddfe8f2cde8c4431db67a337"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8de2247b5bb20d1b67d40c274c17697a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a8de2247b5bb20d1b67d40c274c17697a">TangentAt</a> (double t) const</td></tr>
<tr class="memdesc:a8de2247b5bb20d1b67d40c274c17697a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate unit tangent vector at a parameter. <a href="#a8de2247b5bb20d1b67d40c274c17697a">More...</a><br /></td></tr>
<tr class="separator:a8de2247b5bb20d1b67d40c274c17697a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f59373850214fc53a6c793596aece78"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#a9f59373850214fc53a6c793596aece78">Transform</a> (const <a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> &amp;xform) override</td></tr>
<tr class="memdesc:a9f59373850214fc53a6c793596aece78"><td class="mdescLeft">&#160;</td><td class="mdescRight">overrides virtual <a class="el" href="../../df/de0/class_o_n___geometry.html#add710872e89bc29e1ed1321b3e70b1b1" title="Transforms the object. ">ON_Geometry::Transform()</a>. <a class="el" href="../../d4/d5a/class_o_n___curve.html#a9f59373850214fc53a6c793596aece78" title="overrides virtual ON_Geometry::Transform(). ON_Curve::Transform() calls ON_Geometry::Transform(xform)...">ON_Curve::Transform()</a> calls ON_Geometry::Transform(xform), which calls ON_Object::TransformUserData(xform), and then calls this-&gt;<a class="el" href="../../d4/d5a/class_o_n___curve.html#a5a1d3ccd2a60f2ed3f06c864ee263429" title="Destroys the runtime curve tree used to speed closest point and intersection calcuations. ">DestroyCurveTree()</a>. <a href="#a9f59373850214fc53a6c793596aece78">More...</a><br /></td></tr>
<tr class="separator:a9f59373850214fc53a6c793596aece78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd583766fdcd75cc269e87aeab40c4a7"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#abd583766fdcd75cc269e87aeab40c4a7">Trim</a> (const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> &amp;domain)</td></tr>
<tr class="memdesc:abd583766fdcd75cc269e87aeab40c4a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes portions of the curve outside the specified interval. <a href="#abd583766fdcd75cc269e87aeab40c4a7">More...</a><br /></td></tr>
<tr class="separator:abd583766fdcd75cc269e87aeab40c4a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_o_n___geometry"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_o_n___geometry')"><img src="../../closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="../../df/de0/class_o_n___geometry.html">ON_Geometry</a></td></tr>
<tr class="memitem:a65226d33b1c8c1e8289e37073566c953 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a65226d33b1c8c1e8289e37073566c953">ON_Geometry</a> ()=default</td></tr>
<tr class="separator:a65226d33b1c8c1e8289e37073566c953 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71fbefc2a5f24da5f5fb4061d6849f17 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a71fbefc2a5f24da5f5fb4061d6849f17">ON_Geometry</a> (const <a class="el" href="../../df/de0/class_o_n___geometry.html">ON_Geometry</a> &amp;)=default</td></tr>
<tr class="separator:a71fbefc2a5f24da5f5fb4061d6849f17 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f2ca447610c622f3530944c764a3a67 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a4f2ca447610c622f3530944c764a3a67">~ON_Geometry</a> ()=default</td></tr>
<tr class="separator:a4f2ca447610c622f3530944c764a3a67 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1acdd7f0c350da696b402a9ac5edce0 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d1/d17/class_o_n___bounding_box.html">ON_BoundingBox</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#ab1acdd7f0c350da696b402a9ac5edce0">BoundingBox</a> () const</td></tr>
<tr class="memdesc:ab1acdd7f0c350da696b402a9ac5edce0 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get object's 3d axis aligned bounding box. <a href="../../df/de0/class_o_n___geometry.html#ab1acdd7f0c350da696b402a9ac5edce0">More...</a><br /></td></tr>
<tr class="separator:ab1acdd7f0c350da696b402a9ac5edce0 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb8d6122b6285e4ab819fa50bd442c23 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual class <a class="el" href="../../d9/d96/class_o_n___brep.html">ON_Brep</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#aeb8d6122b6285e4ab819fa50bd442c23">BrepForm</a> (class <a class="el" href="../../d9/d96/class_o_n___brep.html">ON_Brep</a> *brep=nullptr) const</td></tr>
<tr class="memdesc:aeb8d6122b6285e4ab819fa50bd442c23 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">If possible, <a class="el" href="../../df/de0/class_o_n___geometry.html#aeb8d6122b6285e4ab819fa50bd442c23" title="If possible, BrepForm() creates a brep form of the ON_Geometry. ">BrepForm()</a> creates a brep form of the <a class="el" href="../../df/de0/class_o_n___geometry.html" title="Base class for all geometry classes that must provide runtime class id. Provides interface for common...">ON_Geometry</a>. <a href="../../df/de0/class_o_n___geometry.html#aeb8d6122b6285e4ab819fa50bd442c23">More...</a><br /></td></tr>
<tr class="separator:aeb8d6122b6285e4ab819fa50bd442c23 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8dfbd8534986bbd327a6ad812e374be inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#af8dfbd8534986bbd327a6ad812e374be">ClearBoundingBox</a> ()</td></tr>
<tr class="memdesc:af8dfbd8534986bbd327a6ad812e374be inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Some objects cache bounding box information. If you modify an object, then call <a class="el" href="../../df/de0/class_o_n___geometry.html#af8dfbd8534986bbd327a6ad812e374be" title="Some objects cache bounding box information. If you modify an object, then call ClearBoundingBox() to...">ClearBoundingBox()</a> to inform the object that any cached bounding boxes are invalid. <a href="../../df/de0/class_o_n___geometry.html#af8dfbd8534986bbd327a6ad812e374be">More...</a><br /></td></tr>
<tr class="separator:af8dfbd8534986bbd327a6ad812e374be inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20e5d1aeada9545127329a8699c702b9 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual ON_COMPONENT_INDEX&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a20e5d1aeada9545127329a8699c702b9">ComponentIndex</a> () const</td></tr>
<tr class="memdesc:a20e5d1aeada9545127329a8699c702b9 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this piece of geometry is a component in something larger, like an <a class="el" href="../../dd/de8/class_o_n___brep_edge.html" title="Brep edge information is stored in ON_BrepEdge classes. ON_Brep.m_E[] is an array of all the edges in...">ON_BrepEdge</a> in an <a class="el" href="../../d9/d96/class_o_n___brep.html">ON_Brep</a>, then this function returns the component index. <a href="../../df/de0/class_o_n___geometry.html#a20e5d1aeada9545127329a8699c702b9">More...</a><br /></td></tr>
<tr class="separator:a20e5d1aeada9545127329a8699c702b9 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d66ab16e2fddfd1b3e6cf3d6ebbd364 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a0d66ab16e2fddfd1b3e6cf3d6ebbd364">Dimension</a> () const</td></tr>
<tr class="memdesc:a0d66ab16e2fddfd1b3e6cf3d6ebbd364 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dimension of the object. <a href="../../df/de0/class_o_n___geometry.html#a0d66ab16e2fddfd1b3e6cf3d6ebbd364">More...</a><br /></td></tr>
<tr class="separator:a0d66ab16e2fddfd1b3e6cf3d6ebbd364 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad615e08fe92af659c8d10cbb4f8fc5e3 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#ad615e08fe92af659c8d10cbb4f8fc5e3">GetBBox</a> (double *boxmin, double *boxmax, bool bGrowBox=false) const</td></tr>
<tr class="memdesc:ad615e08fe92af659c8d10cbb4f8fc5e3 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the virtual function that actually calculates axis aligned bounding boxes. <a href="../../df/de0/class_o_n___geometry.html#ad615e08fe92af659c8d10cbb4f8fc5e3">More...</a><br /></td></tr>
<tr class="separator:ad615e08fe92af659c8d10cbb4f8fc5e3 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7259b0a7e7c663e55345788411352075 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a7259b0a7e7c663e55345788411352075">GetBoundingBox</a> (<a class="el" href="../../d1/d17/class_o_n___bounding_box.html">ON_BoundingBox</a> &amp;bbox, bool bGrowBox=false) const</td></tr>
<tr class="memdesc:a7259b0a7e7c663e55345788411352075 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get object's 3d axis aligned bounding box or the union of the input box with the object's bounding box. <a href="../../df/de0/class_o_n___geometry.html#a7259b0a7e7c663e55345788411352075">More...</a><br /></td></tr>
<tr class="separator:a7259b0a7e7c663e55345788411352075 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac123c564ea7a43c4406ac78954cf5266 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#ac123c564ea7a43c4406ac78954cf5266">GetBoundingBox</a> (<a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;bbox_min, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;bbox_max, bool bGrowBox=false) const</td></tr>
<tr class="memdesc:ac123c564ea7a43c4406ac78954cf5266 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get corners of object's 3d axis aligned bounding box or the union of the input box with the object's bounding box. <a href="../../df/de0/class_o_n___geometry.html#ac123c564ea7a43c4406ac78954cf5266">More...</a><br /></td></tr>
<tr class="separator:ac123c564ea7a43c4406ac78954cf5266 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84b28eb33d34c71913b9cd16f8ecab50 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a84b28eb33d34c71913b9cd16f8ecab50">HasBrepForm</a> () const</td></tr>
<tr class="memdesc:a84b28eb33d34c71913b9cd16f8ecab50 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query an object to see if it has an <a class="el" href="../../d9/d96/class_o_n___brep.html">ON_Brep</a> form. Result: Returns true if the virtual <a class="el" href="../../df/de0/class_o_n___geometry.html#aeb8d6122b6285e4ab819fa50bd442c23" title="If possible, BrepForm() creates a brep form of the ON_Geometry. ">ON_Geometry::BrepForm</a> can compute an <a class="el" href="../../d9/d96/class_o_n___brep.html">ON_Brep</a> representation of this object. <a href="../../df/de0/class_o_n___geometry.html#a84b28eb33d34c71913b9cd16f8ecab50">More...</a><br /></td></tr>
<tr class="separator:a84b28eb33d34c71913b9cd16f8ecab50 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af156cd098b9e68fab5f32e76b1e274e2 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#af156cd098b9e68fab5f32e76b1e274e2">IsDeformable</a> () const</td></tr>
<tr class="separator:af156cd098b9e68fab5f32e76b1e274e2 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf87e5ba0d9939dfabbb9f421b9d2b3b inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#adf87e5ba0d9939dfabbb9f421b9d2b3b">IsValid</a> (class <a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> *text_log=nullptr) const override</td></tr>
<tr class="memdesc:adf87e5ba0d9939dfabbb9f421b9d2b3b inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests an object to see if its data members are correctly initialized. <a href="../../df/de0/class_o_n___geometry.html#adf87e5ba0d9939dfabbb9f421b9d2b3b">More...</a><br /></td></tr>
<tr class="separator:adf87e5ba0d9939dfabbb9f421b9d2b3b inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3d5cb708edca66a4a6c1992299329a3 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#ac3d5cb708edca66a4a6c1992299329a3">MakeDeformable</a> ()</td></tr>
<tr class="memdesc:ac3d5cb708edca66a4a6c1992299329a3 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">If possible, converts the object into a form that can be accuratly modified with "squishy" transformations like projections, shears, an non-uniform scaling. <a href="../../df/de0/class_o_n___geometry.html#ac3d5cb708edca66a4a6c1992299329a3">More...</a><br /></td></tr>
<tr class="separator:ac3d5cb708edca66a4a6c1992299329a3 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a071e7617820ea38c40f4b3966e7daee0 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../df/de0/class_o_n___geometry.html">ON_Geometry</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a071e7617820ea38c40f4b3966e7daee0">operator=</a> (const <a class="el" href="../../df/de0/class_o_n___geometry.html">ON_Geometry</a> &amp;)=default</td></tr>
<tr class="separator:a071e7617820ea38c40f4b3966e7daee0 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c8306ab6d43886453a056160429bc0a inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a3c8306ab6d43886453a056160429bc0a">Rotate</a> (double sin_angle, double cos_angle, const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;rotation_axis, const <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;rotation_center)</td></tr>
<tr class="memdesc:a3c8306ab6d43886453a056160429bc0a inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). <a href="../../df/de0/class_o_n___geometry.html#a3c8306ab6d43886453a056160429bc0a">More...</a><br /></td></tr>
<tr class="separator:a3c8306ab6d43886453a056160429bc0a inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af49629d8d427ee579d9b28c1e25818e0 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#af49629d8d427ee579d9b28c1e25818e0">Rotate</a> (double rotation_angle, const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;rotation_axis, const <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;rotation_center)</td></tr>
<tr class="memdesc:af49629d8d427ee579d9b28c1e25818e0 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). <a href="../../df/de0/class_o_n___geometry.html#af49629d8d427ee579d9b28c1e25818e0">More...</a><br /></td></tr>
<tr class="separator:af49629d8d427ee579d9b28c1e25818e0 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b847d6dcda412468ab59f06328b2619 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a1b847d6dcda412468ab59f06328b2619">Scale</a> (double scale_factor)</td></tr>
<tr class="memdesc:a1b847d6dcda412468ab59f06328b2619 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scales the object by the specified facotor. The scale is centered at the origin. <a href="../../df/de0/class_o_n___geometry.html#a1b847d6dcda412468ab59f06328b2619">More...</a><br /></td></tr>
<tr class="separator:a1b847d6dcda412468ab59f06328b2619 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a737d7b1433104a39298629931e899cd4 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a737d7b1433104a39298629931e899cd4">SwapCoordinates</a> (int i, int j)</td></tr>
<tr class="memdesc:a737d7b1433104a39298629931e899cd4 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps object coordinate values with indices i and j. <a href="../../df/de0/class_o_n___geometry.html#a737d7b1433104a39298629931e899cd4">More...</a><br /></td></tr>
<tr class="separator:a737d7b1433104a39298629931e899cd4 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b47e669fde50b5223a8017863598e89 inherit pub_methods_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a3b47e669fde50b5223a8017863598e89">Translate</a> (const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;translation_vector)</td></tr>
<tr class="memdesc:a3b47e669fde50b5223a8017863598e89 inherit pub_methods_class_o_n___geometry"><td class="mdescLeft">&#160;</td><td class="mdescRight">Translates the object along the specified vector. <a href="../../df/de0/class_o_n___geometry.html#a3b47e669fde50b5223a8017863598e89">More...</a><br /></td></tr>
<tr class="separator:a3b47e669fde50b5223a8017863598e89 inherit pub_methods_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_o_n___object"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_o_n___object')"><img src="../../closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a></td></tr>
<tr class="memitem:af580c6199f4469c49a4e09a117626c10 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#af580c6199f4469c49a4e09a117626c10">ON_Object</a> () ON_NOEXCEPT</td></tr>
<tr class="separator:af580c6199f4469c49a4e09a117626c10 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a274166b34d06fc07a85997fd01b2dab1 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a274166b34d06fc07a85997fd01b2dab1">ON_Object</a> (const <a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a> &amp;)</td></tr>
<tr class="separator:a274166b34d06fc07a85997fd01b2dab1 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad940aab7d51005c8732d76d1b188e332 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ad940aab7d51005c8732d76d1b188e332">~ON_Object</a> ()</td></tr>
<tr class="separator:ad940aab7d51005c8732d76d1b188e332 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a1cfab63437a2d03cc50fdc6734f2a5 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="../../d1/df0/class_o_n___aggregate_component_status.html">ON_AggregateComponentStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a8a1cfab63437a2d03cc50fdc6734f2a5">AggregateComponentStatus</a> () const</td></tr>
<tr class="memdesc:a8a1cfab63437a2d03cc50fdc6734f2a5 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. <a href="../../d9/d7b/class_o_n___object.html#a8a1cfab63437a2d03cc50fdc6734f2a5">More...</a><br /></td></tr>
<tr class="separator:a8a1cfab63437a2d03cc50fdc6734f2a5 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5432b341051664c185b10712a6e5b79 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ad5432b341051664c185b10712a6e5b79">AttachUserData</a> (class <a class="el" href="../../d5/d55/class_o_n___user_data.html">ON_UserData</a> *pUserData)</td></tr>
<tr class="memdesc:ad5432b341051664c185b10712a6e5b79 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach user data to an object. <a href="../../d9/d7b/class_o_n___object.html#ad5432b341051664c185b10712a6e5b79">More...</a><br /></td></tr>
<tr class="separator:ad5432b341051664c185b10712a6e5b79 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27893ff72ca7abbe985f8b5f4ccd900e inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a27893ff72ca7abbe985f8b5f4ccd900e">ClearAllComponentStates</a> () const</td></tr>
<tr class="memdesc:a27893ff72ca7abbe985f8b5f4ccd900e inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set all active level component states to <a class="el" href="../../d9/d12/class_o_n___component_status.html#ae267cd5d4088c8a033fa348d30227223">ON_ComponentStatus::NoneSet</a>. <a href="../../d9/d7b/class_o_n___object.html#a27893ff72ca7abbe985f8b5f4ccd900e">More...</a><br /></td></tr>
<tr class="separator:a27893ff72ca7abbe985f8b5f4ccd900e inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1af75ebe418edff4a11985f8fca7d83b inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a1af75ebe418edff4a11985f8fca7d83b">ClearComponentStates</a> (<a class="el" href="../../d9/d12/class_o_n___component_status.html">ON_ComponentStatus</a> states_to_clear) const</td></tr>
<tr class="memdesc:a1af75ebe418edff4a11985f8fca7d83b inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the specified states on every component. <a href="../../d9/d7b/class_o_n___object.html#a1af75ebe418edff4a11985f8fca7d83b">More...</a><br /></td></tr>
<tr class="separator:a1af75ebe418edff4a11985f8fca7d83b inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeadf76a46f3f1a661bbf41e1b754fe89 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#aeadf76a46f3f1a661bbf41e1b754fe89">ClearComponentStates</a> (ON_COMPONENT_INDEX component_index, <a class="el" href="../../d9/d12/class_o_n___component_status.html">ON_ComponentStatus</a> states_to_clear) const</td></tr>
<tr class="memdesc:aeadf76a46f3f1a661bbf41e1b754fe89 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear states on an individual component. <a href="../../d9/d7b/class_o_n___object.html#aeadf76a46f3f1a661bbf41e1b754fe89">More...</a><br /></td></tr>
<tr class="separator:aeadf76a46f3f1a661bbf41e1b754fe89 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad044157e5c1efde9fce1c6ccf6e81ff3 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ad044157e5c1efde9fce1c6ccf6e81ff3">CopyUserData</a> (const <a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a> &amp;source_object, <a class="el" href="../../d8/db4/struct_o_n___u_u_i_d__struct.html">ON_UUID</a> source_userdata_item_id, <a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956c">ON_Object::UserDataConflictResolution</a> userdata_conflict_resolution)</td></tr>
<tr class="memdesc:ad044157e5c1efde9fce1c6ccf6e81ff3 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert user tool that copies user data items with positive values of <a class="el" href="../../d5/d55/class_o_n___user_data.html#ac025400e9bff35c899ed85ba1b0a52e4">ON_UserData.m_userdata_copycount</a> from source_object to "this. <a href="../../d9/d7b/class_o_n___object.html#ad044157e5c1efde9fce1c6ccf6e81ff3">More...</a><br /></td></tr>
<tr class="separator:ad044157e5c1efde9fce1c6ccf6e81ff3 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58958333257eba5575a6a1b09c366c1b inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a58958333257eba5575a6a1b09c366c1b">CopyUserData</a> (const <a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a> &amp;source_object)</td></tr>
<tr class="memdesc:a58958333257eba5575a6a1b09c366c1b inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls CopyUserData(source_object,ON_Object::UserDataConflictResolution::source_object). <a href="../../d9/d7b/class_o_n___object.html#a58958333257eba5575a6a1b09c366c1b">More...</a><br /></td></tr>
<tr class="separator:a58958333257eba5575a6a1b09c366c1b inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af51d5fcec9379ad9b7a56ac4dfc9a8b2 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual ON__UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#af51d5fcec9379ad9b7a56ac4dfc9a8b2">DataCRC</a> (ON__UINT32 current_remainder) const</td></tr>
<tr class="memdesc:af51d5fcec9379ad9b7a56ac4dfc9a8b2 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical. <a href="../../d9/d7b/class_o_n___object.html#af51d5fcec9379ad9b7a56ac4dfc9a8b2">More...</a><br /></td></tr>
<tr class="separator:af51d5fcec9379ad9b7a56ac4dfc9a8b2 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa67be7d8cc76ec82ae22a30093ecf98f inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#aa67be7d8cc76ec82ae22a30093ecf98f">DeleteComponents</a> (const ON_COMPONENT_INDEX *ci_list, size_t ci_count)</td></tr>
<tr class="memdesc:aa67be7d8cc76ec82ae22a30093ecf98f inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the portions of the object identified in ci_list[]. <a href="../../d9/d7b/class_o_n___object.html#aa67be7d8cc76ec82ae22a30093ecf98f">More...</a><br /></td></tr>
<tr class="separator:aa67be7d8cc76ec82ae22a30093ecf98f inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dbb0eff3b2287152b40991b3afca9ee inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a1dbb0eff3b2287152b40991b3afca9ee">DetachUserData</a> (class <a class="el" href="../../d5/d55/class_o_n___user_data.html">ON_UserData</a> *pUserData)</td></tr>
<tr class="memdesc:a1dbb0eff3b2287152b40991b3afca9ee inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove user data from an object. <a href="../../d9/d7b/class_o_n___object.html#a1dbb0eff3b2287152b40991b3afca9ee">More...</a><br /></td></tr>
<tr class="separator:a1dbb0eff3b2287152b40991b3afca9ee inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21c7b04a80f1806c3a45f72d7c491a44 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a21c7b04a80f1806c3a45f72d7c491a44">Dump</a> (<a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> &amp;) const</td></tr>
<tr class="memdesc:a21c7b04a80f1806c3a45f72d7c491a44 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a text dump of the object. <a href="../../d9/d7b/class_o_n___object.html#a21c7b04a80f1806c3a45f72d7c491a44">More...</a><br /></td></tr>
<tr class="separator:a21c7b04a80f1806c3a45f72d7c491a44 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad265ca0da2d751edaa9d2b5ab2540c6a inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ad265ca0da2d751edaa9d2b5ab2540c6a">EmergencyDestroy</a> ()</td></tr>
<tr class="memdesc:ad265ca0da2d751edaa9d2b5ab2540c6a inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets m_user_data_list = 0. <a href="../../d9/d7b/class_o_n___object.html#ad265ca0da2d751edaa9d2b5ab2540c6a">More...</a><br /></td></tr>
<tr class="separator:ad265ca0da2d751edaa9d2b5ab2540c6a inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb43bb324c44740c4bc2932e2f95c835 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">class <a class="el" href="../../d5/d55/class_o_n___user_data.html">ON_UserData</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#adb43bb324c44740c4bc2932e2f95c835">FirstUserData</a> () const</td></tr>
<tr class="memdesc:adb43bb324c44740c4bc2932e2f95c835 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">User data is stored as a linked list of <a class="el" href="../../d5/d55/class_o_n___user_data.html">ON_UserData</a> classes. FirstUserData gets the first item in the linked list. This is the most recent item attached using <a class="el" href="../../d9/d7b/class_o_n___object.html#ad5432b341051664c185b10712a6e5b79" title="Attach user data to an object. ">AttachUserData()</a>. Remark: To iterate through all the user data on an object, call <a class="el" href="../../d9/d7b/class_o_n___object.html#adb43bb324c44740c4bc2932e2f95c835" title="User data is stored as a linked list of ON_UserData classes. FirstUserData gets the first item in the...">FirstUserData()</a> and then use <a class="el" href="../../d5/d55/class_o_n___user_data.html#a5e5a0d01e000319e0b37b340752613d8">ON_UserData::Next()</a> to traverse the list. <a href="../../d9/d7b/class_o_n___object.html#adb43bb324c44740c4bc2932e2f95c835">More...</a><br /></td></tr>
<tr class="separator:adb43bb324c44740c4bc2932e2f95c835 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a691de6470e814973858aa5c51eaffa77 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a691de6470e814973858aa5c51eaffa77">GetComponentsWithSetStates</a> (<a class="el" href="../../d9/d12/class_o_n___component_status.html">ON_ComponentStatus</a> states_filter, bool bAllEqualStates, <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; ON_COMPONENT_INDEX &gt; &amp;components) const</td></tr>
<tr class="separator:a691de6470e814973858aa5c51eaffa77 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29f8d609e22008680581c6ca72ac47df inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">class <a class="el" href="../../d5/d55/class_o_n___user_data.html">ON_UserData</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a29f8d609e22008680581c6ca72ac47df">GetUserData</a> (const <a class="el" href="../../d8/db4/struct_o_n___u_u_i_d__struct.html">ON_UUID</a> &amp;userdata_uuid) const</td></tr>
<tr class="memdesc:a29f8d609e22008680581c6ca72ac47df inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to user data. <a href="../../d9/d7b/class_o_n___object.html#a29f8d609e22008680581c6ca72ac47df">More...</a><br /></td></tr>
<tr class="separator:a29f8d609e22008680581c6ca72ac47df inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab40b5e89b4766299e415593b31a3849c inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ab40b5e89b4766299e415593b31a3849c">GetUserString</a> (const wchar_t *key, <a class="el" href="../../d1/d11/class_o_n__w_string.html">ON_wString</a> &amp;string_value) const</td></tr>
<tr class="memdesc:ab40b5e89b4766299e415593b31a3849c inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get user string from the object. <a href="../../d9/d7b/class_o_n___object.html#ab40b5e89b4766299e415593b31a3849c">More...</a><br /></td></tr>
<tr class="separator:ab40b5e89b4766299e415593b31a3849c inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac285fba1506b2b9b821e3655582939c4 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ac285fba1506b2b9b821e3655582939c4">GetUserStringKeys</a> (<a class="el" href="../../dd/d40/class_o_n___class_array.html">ON_ClassArray</a>&lt; <a class="el" href="../../d1/d11/class_o_n__w_string.html">ON_wString</a> &gt; &amp;user_string_keys) const</td></tr>
<tr class="memdesc:ac285fba1506b2b9b821e3655582939c4 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a list of all user string keys on the object. <a href="../../d9/d7b/class_o_n___object.html#ac285fba1506b2b9b821e3655582939c4">More...</a><br /></td></tr>
<tr class="separator:ac285fba1506b2b9b821e3655582939c4 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a004ab49490f69fcdc7681919c3837a33 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a004ab49490f69fcdc7681919c3837a33">GetUserStrings</a> (<a class="el" href="../../dd/d40/class_o_n___class_array.html">ON_ClassArray</a>&lt; <a class="el" href="../../d0/d82/class_o_n___user_string.html">ON_UserString</a> &gt; &amp;user_strings) const</td></tr>
<tr class="memdesc:a004ab49490f69fcdc7681919c3837a33 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a list of all user strings on the object. <a href="../../d9/d7b/class_o_n___object.html#a004ab49490f69fcdc7681919c3837a33">More...</a><br /></td></tr>
<tr class="separator:a004ab49490f69fcdc7681919c3837a33 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe5367058a90545e81cd79b78103175d inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#afe5367058a90545e81cd79b78103175d">IsKindOf</a> (const <a class="el" href="../../d3/d3c/class_o_n___class_id.html">ON_ClassId</a> *pClassId) const</td></tr>
<tr class="memdesc:afe5367058a90545e81cd79b78103175d inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Low level tool to test if an object is derived from a specified class. <a href="../../d9/d7b/class_o_n___object.html#afe5367058a90545e81cd79b78103175d">More...</a><br /></td></tr>
<tr class="separator:afe5367058a90545e81cd79b78103175d inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a609192fbafecbe4be3136d8cb4dce882 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a609192fbafecbe4be3136d8cb4dce882">MarkAggregateComponentStatusAsNotCurrent</a> () const</td></tr>
<tr class="memdesc:a609192fbafecbe4be3136d8cb4dce882 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. <a href="../../d9/d7b/class_o_n___object.html#a609192fbafecbe4be3136d8cb4dce882">More...</a><br /></td></tr>
<tr class="separator:a609192fbafecbe4be3136d8cb4dce882 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0674ccb79b6333e4b3c8e95ee10dd73 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ae0674ccb79b6333e4b3c8e95ee10dd73">MemoryRelocate</a> ()</td></tr>
<tr class="memdesc:ae0674ccb79b6333e4b3c8e95ee10dd73 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="../../d9/d7b/class_o_n___object.html#ae0674ccb79b6333e4b3c8e95ee10dd73" title="The MemoryRelocate() function is called when an object&#39;s location in memory is changed. For example, if an object resides in a chunk of memory that is grown by calling a realloc that has to allocate a new chunk and copy the contents of the old chunk to the new chunk, then the location of the object&#39;s memory changes. In practice this happens when classes derived from ON_Object are stored in dynamic arrays, like the default implementation of ON_ObjectArray&lt;&gt;&#39;s that use realloc to grow the dynamic array. ">MemoryRelocate()</a> function is called when an object's location in memory is changed. For example, if an object resides in a chunk of memory that is grown by calling a realloc that has to allocate a new chunk and copy the contents of the old chunk to the new chunk, then the location of the object's memory changes. In practice this happens when classes derived from <a class="el" href="../../d9/d7b/class_o_n___object.html" title="Pure virtual base class for all classes that must provide runtime class id or support object level 3D...">ON_Object</a> are stored in dynamic arrays, like the default implementation of ON_ObjectArray&lt;&gt;'s that use realloc to grow the dynamic array. <a href="../../d9/d7b/class_o_n___object.html#ae0674ccb79b6333e4b3c8e95ee10dd73">More...</a><br /></td></tr>
<tr class="separator:ae0674ccb79b6333e4b3c8e95ee10dd73 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21c508d3b53458e252adbcd29e62ed09 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="../../d8/db4/struct_o_n___u_u_i_d__struct.html">ON_UUID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a21c508d3b53458e252adbcd29e62ed09">ModelObjectId</a> () const</td></tr>
<tr class="memdesc:a21c508d3b53458e252adbcd29e62ed09 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">All objects in an opennurbs model have an id ( ON_Layer.m_layer_id, ON_Font.m_font_id, ON_Material.m_material_id, <a class="el" href="../../d0/d52/class_o_n__3dm_object_attributes.html#a806a85052b002c45021650e3b97e2018">ON_3dmObjectAttributes.m_uuid</a> ). <a href="../../d9/d7b/class_o_n___object.html#a21c508d3b53458e252adbcd29e62ed09">More...</a><br /></td></tr>
<tr class="separator:a21c508d3b53458e252adbcd29e62ed09 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78b4ecb2eb36641e1ee6b4fc6129606e inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a78b4ecb2eb36641e1ee6b4fc6129606e">MoveUserData</a> (<a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a> &amp;source_object, <a class="el" href="../../d8/db4/struct_o_n___u_u_i_d__struct.html">ON_UUID</a> source_userdata_item_id, <a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956c">ON_Object::UserDataConflictResolution</a> userdata_conflict_resolution, bool bDeleteAllSourceItems)</td></tr>
<tr class="memdesc:a78b4ecb2eb36641e1ee6b4fc6129606e inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expert user tool that moves user data items from source_object to "this. <a href="../../d9/d7b/class_o_n___object.html#a78b4ecb2eb36641e1ee6b4fc6129606e">More...</a><br /></td></tr>
<tr class="separator:a78b4ecb2eb36641e1ee6b4fc6129606e inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54a891ae2cb2a25008a7a39cb19dfcea inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a54a891ae2cb2a25008a7a39cb19dfcea">MoveUserData</a> (<a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a> &amp;source_object)</td></tr>
<tr class="memdesc:a54a891ae2cb2a25008a7a39cb19dfcea inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls MoveUserData(source_object,ON_Object::UserDataConflictResolution::source_object,true). <a href="../../d9/d7b/class_o_n___object.html#a54a891ae2cb2a25008a7a39cb19dfcea">More...</a><br /></td></tr>
<tr class="separator:a54a891ae2cb2a25008a7a39cb19dfcea inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba6166c9aecef42639e684a2a3fda223 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#aba6166c9aecef42639e684a2a3fda223">operator=</a> (const <a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a> &amp;)</td></tr>
<tr class="separator:aba6166c9aecef42639e684a2a3fda223 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88b61cafc0024ecb7a4bd22da2718680 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a88b61cafc0024ecb7a4bd22da2718680">PurgeUserData</a> ()</td></tr>
<tr class="memdesc:a88b61cafc0024ecb7a4bd22da2718680 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../d9/d7b/class_o_n___object.html#a88b61cafc0024ecb7a4bd22da2718680" title="PurgeUserData() removes all user data from object. ">PurgeUserData()</a> removes all user data from object. <a href="../../d9/d7b/class_o_n___object.html#a88b61cafc0024ecb7a4bd22da2718680">More...</a><br /></td></tr>
<tr class="separator:a88b61cafc0024ecb7a4bd22da2718680 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09ac9742ead91dd8f9cdd579bcbfed10 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a09ac9742ead91dd8f9cdd579bcbfed10">Read</a> (<a class="el" href="../../db/d16/class_o_n___binary_archive.html">ON_BinaryArchive</a> &amp;binary_archive)</td></tr>
<tr class="memdesc:a09ac9742ead91dd8f9cdd579bcbfed10 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Low level archive writing tool used by <a class="el" href="../../db/d16/class_o_n___binary_archive.html#a025b86c1da38eb51f66d6260b1141ac3" title="Reads and object from a 3dm archive; ">ON_BinaryArchive::ReadObject()</a>. <a href="../../d9/d7b/class_o_n___object.html#a09ac9742ead91dd8f9cdd579bcbfed10">More...</a><br /></td></tr>
<tr class="separator:a09ac9742ead91dd8f9cdd579bcbfed10 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab728c0576fd5913bc1575b74997bddb5 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ab728c0576fd5913bc1575b74997bddb5">SetComponentStates</a> (ON_COMPONENT_INDEX component_index, <a class="el" href="../../d9/d12/class_o_n___component_status.html">ON_ComponentStatus</a> states_to_set) const</td></tr>
<tr class="memdesc:ab728c0576fd5913bc1575b74997bddb5 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set states on an individual component. <a href="../../d9/d7b/class_o_n___object.html#ab728c0576fd5913bc1575b74997bddb5">More...</a><br /></td></tr>
<tr class="separator:ab728c0576fd5913bc1575b74997bddb5 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a589f1fdc28f6259d1bd22bdedc9c4c76 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a589f1fdc28f6259d1bd22bdedc9c4c76">SetComponentStatus</a> (ON_COMPONENT_INDEX component_index, <a class="el" href="../../d9/d12/class_o_n___component_status.html">ON_ComponentStatus</a> status_to_copy) const</td></tr>
<tr class="memdesc:a589f1fdc28f6259d1bd22bdedc9c4c76 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy status settings to an individual component. <a href="../../d9/d7b/class_o_n___object.html#a589f1fdc28f6259d1bd22bdedc9c4c76">More...</a><br /></td></tr>
<tr class="separator:a589f1fdc28f6259d1bd22bdedc9c4c76 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a074dc9e9b919853919564793c37f5143 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a074dc9e9b919853919564793c37f5143">SetUserString</a> (const wchar_t *key, const wchar_t *string_value)</td></tr>
<tr class="memdesc:a074dc9e9b919853919564793c37f5143 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach a user string to the object. This information will perisist through copy construction, operator=, and file IO. <a href="../../d9/d7b/class_o_n___object.html#a074dc9e9b919853919564793c37f5143">More...</a><br /></td></tr>
<tr class="separator:a074dc9e9b919853919564793c37f5143 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7234af898c307a2c2f7931db7e627592 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a7234af898c307a2c2f7931db7e627592">SetUserStrings</a> (int count, const <a class="el" href="../../d0/d82/class_o_n___user_string.html">ON_UserString</a> *user_strings, bool bReplace)</td></tr>
<tr class="memdesc:a7234af898c307a2c2f7931db7e627592 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append entries to the user string list <a href="../../d9/d7b/class_o_n___object.html#a7234af898c307a2c2f7931db7e627592">More...</a><br /></td></tr>
<tr class="separator:a7234af898c307a2c2f7931db7e627592 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a881bd2f0d8515adba1c42c578bcb7052 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a881bd2f0d8515adba1c42c578bcb7052">TransformUserData</a> (const class <a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> &amp;xform)</td></tr>
<tr class="memdesc:a881bd2f0d8515adba1c42c578bcb7052 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Objects derived from <a class="el" href="../../df/de0/class_o_n___geometry.html" title="Base class for all geometry classes that must provide runtime class id. Provides interface for common...">ON_Geometry</a> must call <a class="el" href="../../d9/d7b/class_o_n___object.html#a881bd2f0d8515adba1c42c578bcb7052" title="Objects derived from ON_Geometry must call TransformUserData() in their Transform() member function...">TransformUserData()</a> in their Transform() member function. <a href="../../d9/d7b/class_o_n___object.html#a881bd2f0d8515adba1c42c578bcb7052">More...</a><br /></td></tr>
<tr class="separator:a881bd2f0d8515adba1c42c578bcb7052 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82188bbf97bbd149ac6fcb7cd8e989d1 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a82188bbf97bbd149ac6fcb7cd8e989d1">UpdateReferencedComponents</a> (const class <a class="el" href="../../d8/d72/class_o_n___component_manifest.html">ON_ComponentManifest</a> &amp;source_manifest, const class <a class="el" href="../../d8/d72/class_o_n___component_manifest.html">ON_ComponentManifest</a> &amp;destination_manifest, const class <a class="el" href="../../d9/df6/class_o_n___manifest_map.html">ON_ManifestMap</a> &amp;manifest_map)</td></tr>
<tr class="memdesc:a82188bbf97bbd149ac6fcb7cd8e989d1 inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses the destination_manifest to update references to other components. This is typically done when a component's references came from a "source" context and are being updated to the "destination" context. For example, inserting one model into another when index, id, and name conflicts need to be resolved at the time of insertion. <a href="../../d9/d7b/class_o_n___object.html#a82188bbf97bbd149ac6fcb7cd8e989d1">More...</a><br /></td></tr>
<tr class="separator:a82188bbf97bbd149ac6fcb7cd8e989d1 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab648403ebf4592831809710f378e9ac2 inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#ab648403ebf4592831809710f378e9ac2">UserStringCount</a> () const</td></tr>
<tr class="separator:ab648403ebf4592831809710f378e9ac2 inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16eb9ab6bf0d0a614655cf9cd055871a inherit pub_methods_class_o_n___object"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a16eb9ab6bf0d0a614655cf9cd055871a">Write</a> (<a class="el" href="../../db/d16/class_o_n___binary_archive.html">ON_BinaryArchive</a> &amp;binary_archive) const</td></tr>
<tr class="memdesc:a16eb9ab6bf0d0a614655cf9cd055871a inherit pub_methods_class_o_n___object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Low level archive writing tool used by <a class="el" href="../../db/d16/class_o_n___binary_archive.html#a33187abe5d04ac52c41d7a798e664f3b">ON_BinaryArchive::WriteObject()</a>. <a href="../../d9/d7b/class_o_n___object.html#a16eb9ab6bf0d0a614655cf9cd055871a">More...</a><br /></td></tr>
<tr class="separator:a16eb9ab6bf0d0a614655cf9cd055871a inherit pub_methods_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ae57cffd07cc97af4e9636c5088babbdb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d5a/class_o_n___curve.html#ae57cffd07cc97af4e9636c5088babbdb">ParameterSearch</a> (double t, int &amp;index, bool bEnableSnap, const <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; double &gt; &amp;m_t, double RelTol=ON_SQRT_EPSILON) const</td></tr>
<tr class="memdesc:ae57cffd07cc97af4e9636c5088babbdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lookup a parameter in the m_t array, optionally using a built in snap tolerance to snap a parameter value to an element of m_t. This function is used by some types derived from <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> to snap parameter values <a href="#ae57cffd07cc97af4e9636c5088babbdb">More...</a><br /></td></tr>
<tr class="separator:ae57cffd07cc97af4e9636c5088babbdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_class_o_n___object"><td colspan="2" onclick="javascript:toggleInherit('pub_types_class_o_n___object')"><img src="../../closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="../../d9/d7b/class_o_n___object.html">ON_Object</a></td></tr>
<tr class="memitem:a7f520e987ffa14e71b06493340f9956c inherit pub_types_class_o_n___object"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956c">UserDataConflictResolution</a> : unsigned char { <br />
&#160;&#160;<a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956caba9e24ac13ffcde7d2f6b554a33df7cd">UserDataConflictResolution::destination_object</a> = 0,
<a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956ca34f1a09f0cf6c7e702b6aad2260c6b0f">UserDataConflictResolution::source_object</a> = 1,
<a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956cad741a50b9ec9ac0de6491a83bc5b166f">UserDataConflictResolution::source_copycount_gt</a> = 2,
<a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956ca35055504b8fe7e98f97c2b2ea6168ad2">UserDataConflictResolution::source_copycount_ge</a> = 3,
<br />
&#160;&#160;<a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956ca6c944380c6bd502741a041a82ad00a5a">UserDataConflictResolution::destination_copycount_gt</a> = 4,
<a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956cadb77cee2050a09b500c679688e45a105">UserDataConflictResolution::destination_copycount_ge</a> = 5,
<a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956ca880ec7882afd9386e91140bf4f77e594">UserDataConflictResolution::delete_item</a> = 6
<br />
}<tr class="memdesc:a7f520e987ffa14e71b06493340f9956c"><td class="mdescLeft">&#160;</td><td class="mdescRight">When a userdata item is copied or moved from a source object to a destination object, the <a class="el" href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956c" title="When a userdata item is copied or moved from a source object to a destination object, the ON_Object::UserDataConflictResolution enum values specify how conficts are resolved. Remark: A userdata item &quot;conflict&quot; occurs when both the destination and source object have a user data item with the same value of ON_UserData::m_userdata_uuid. ">ON_Object::UserDataConflictResolution</a> enum values specify how conficts are resolved. Remark: A userdata item "conflict" occurs when both the destination and source object have a user data item with the same value of <a class="el" href="../../d5/d55/class_o_n___user_data.html#a9bc044ba84a529fe2195d8f8a817fda2" title="This uuid is the value that must be passed to ON_Object::GetUserData() to retrieve this piece of user...">ON_UserData::m_userdata_uuid</a>. <a href="../../d9/d7b/class_o_n___object.html#a7f520e987ffa14e71b06493340f9956c">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a7f520e987ffa14e71b06493340f9956c inherit pub_types_class_o_n___object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_attribs_class_o_n___geometry"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_class_o_n___geometry')"><img src="../../closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="../../df/de0/class_o_n___geometry.html">ON_Geometry</a></td></tr>
<tr class="memitem:a4d9849b197644c66831f3ed1b8738935 inherit pub_static_attribs_class_o_n___geometry"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="../../df/de0/class_o_n___geometry.html">ON_Geometry</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/class_o_n___geometry.html#a4d9849b197644c66831f3ed1b8738935">Unset</a></td></tr>
<tr class="separator:a4d9849b197644c66831f3ed1b8738935 inherit pub_static_attribs_class_o_n___geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> is a pure virtual class for curve objects </p>
<ul>
<li>Any class derived from <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> should have a ON_OBJECT_DECLARE(ON_...); at the beginning of its class definition and a ON_OBJECT_IMPLEMENT( ON_..., <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> ); in a .cpp file. </li>
</ul>
<div class="fragment"><div class="line">- See the definition of <a class="code" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a> <span class="keywordflow">for</span> an example.</div></div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a4e9b9fd633926e0edb1fe52099fe2130"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e9b9fd633926e0edb1fe52099fe2130">&#9670;&nbsp;</a></span>ON_Curve() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Curve::ON_Curve </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7c0d8b8b7a5b797feca3becb8842b360"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c0d8b8b7a5b797feca3becb8842b360">&#9670;&nbsp;</a></span>~ON_Curve()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ON_Curve::~ON_Curve </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a42282f1334a661f2ab4d3ddf93bcefd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42282f1334a661f2ab4d3ddf93bcefd4">&#9670;&nbsp;</a></span>ON_Curve() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Curve::ON_Curve </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aadf0546a6f3b286a670217caf0abbd7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadf0546a6f3b286a670217caf0abbd7b">&#9670;&nbsp;</a></span>ChangeClosedCurveSeam()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::ChangeClosedCurveSeam </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If this curve is closed, then modify it so that the start/end point is at curve parameter t. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] curve parameter of new start/end point. The returned curves domain will start at t.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#afcfdb8d5cf92d8d474bece06701a564a">ON_NurbsCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a762e058d9df8c2210266004441bf5c1c">ON_PolyCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a55bf2d139541a82a350b79e515bdcc46">ON_PolylineCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#aa02028fa81816e31159ea728b35a547a">ON_ArcCurve</a>, and <a class="el" href="../../d6/d10/class_o_n___poly_edge_curve.html#ad2df59e36b3b7f956de926231d5233b3">ON_PolyEdgeCurve</a>.</p>
</div>
</div>
<a id="abd112f88c48651e238649201743bc692"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd112f88c48651e238649201743bc692">&#9670;&nbsp;</a></span>ChangeDimension()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::ChangeDimension </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>desired_dimension</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Change the dimension of a curve. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">desired_dimension</td><td>[in]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the curve's dimension was already desired_dimension or if the curve's dimension was successfully changed to desired_dimension. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#aa10c0da98f13593e8ee7e1618f68cf5f">ON_NurbsCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#aeff9cc0fdedc09963c7420c2b02f1f30">ON_PolyCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#af3cb563342ab67eac16771ac326cee6d">ON_PolylineCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ac1a569dbb03a81579f9ae8ac94759c16">ON_ArcCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a8a96ebd28e5898a07d4297eafaca985f">ON_LineCurve</a>.</p>
</div>
</div>
<a id="a91ad780521ca0c126603533731882dc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91ad780521ca0c126603533731882dc2">&#9670;&nbsp;</a></span>CurvatureAt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> ON_Curve::CurvatureAt </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate the curvature vector at a parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>curvature vector of the curve at the parameter t. </dd></dl>
<p>No error handling. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#affcb2a2551d248110c8e0dc610e6a9b1" title="Evaluate unit tangent and curvature at a parameter with error checking. ">ON_Curve::EvCurvature</a></dd></dl>
</div>
</div>
<a id="a3c1b90bd24333d58d584016e3b40225d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c1b90bd24333d58d584016e3b40225d">&#9670;&nbsp;</a></span>Degree()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int ON_Curve::Degree </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns maximum algebraic degree of any span or a good estimate if curve spans are not algebraic. </p>
<dl class="section return"><dt>Returns</dt><dd>degree </dd></dl>
<p>Implemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#ac126809468c0d2a3a46a9484c0acb1d0">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a9410b67dcd7c79a3482a72d58a59183d">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#acad78a1ec3fcae6a3df6ebe5b82f83e3">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#afd44a4d9b411deca4a14aaa6d37069c5">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a6920a75ac5ea211236145b0cf4ec5104">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a67fef8ac20f6fd01bb210f9ad4f86e81">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a006e05c085618b65357a9711f3ef6b67">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="a14427359a417f8713b9910f29b8dd302"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14427359a417f8713b9910f29b8dd302">&#9670;&nbsp;</a></span>DerivativeAt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> ON_Curve::DerivativeAt </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate first derivative at a parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>First derivative of the curve at the parameter t. </dd></dl>
<p>No error handling. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a37944a7a4d1c3d7e28afcbc9184ef799" title="Evaluate first derivative at a parameter with error checking. ">ON_Curve::Ev1Der</a></dd></dl>
</div>
</div>
<a id="a5a1d3ccd2a60f2ed3f06c864ee263429"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a1d3ccd2a60f2ed3f06c864ee263429">&#9670;&nbsp;</a></span>DestroyCurveTree()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Curve::DestroyCurveTree </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroys the runtime curve tree used to speed closest point and intersection calcuations. </p>
<p>If the geometry of the curve is modified in any way, then call <a class="el" href="../../d4/d5a/class_o_n___curve.html#a5a1d3ccd2a60f2ed3f06c864ee263429" title="Destroys the runtime curve tree used to speed closest point and intersection calcuations. ">DestroyCurveTree()</a>; The curve tree is created as needed. </p>
</div>
</div>
<a id="a4ad9a73ad53707fbebfc904e772f605b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ad9a73ad53707fbebfc904e772f605b">&#9670;&nbsp;</a></span>DestroyRuntimeCache()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void ON_Curve::DestroyRuntimeCache </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bDelete</em> = <code>true</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual <a class="el" href="../../d9/d7b/class_o_n___object.html#af8435c33ab53af41c22dac75e8917569" title="Expert user function. If you are using openNURBS in its default configuration to read and write 3dm a...">ON_Object::DestroyRuntimeCache</a> override </p>
<p>Reimplemented from <a class="el" href="../../d9/d7b/class_o_n___object.html#af8435c33ab53af41c22dac75e8917569">ON_Object</a>.</p>
<p>Reimplemented in <a class="el" href="../../d8/db7/class_o_n___poly_edge_segment.html#ac9c1c86bc1c548434c3a437448c3296f">ON_PolyEdgeSegment</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#aa34313f708a47da03a20897c4d6beb9a">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a7e3d68e828a1ae33e7f9784bd48fc469">ON_PolyCurve</a>, and <a class="el" href="../../d6/d10/class_o_n___poly_edge_curve.html#a76a58c1e7eae1c9e752746a9d584f4da">ON_PolyEdgeCurve</a>.</p>
</div>
</div>
<a id="ae3a1e3ea7c924246a43754aa03790432"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3a1e3ea7c924246a43754aa03790432">&#9670;&nbsp;</a></span>Domain()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> ON_Curve::Domain </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>domain of the curve. </dd></dl>
<p>Implemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a60ddb0a327eeaf23fded63a7a3f62406">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a5aaef3a48d3084251462a115a1d64330">ON_CurveProxy</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ad3ae9d60f8d45dc4b6ef411f7c083866">ON_ArcCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#ab23358105a708269c397b99b25b6fdb9">ON_PolyCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a2f790bc20bbaab9c7e173f9cc294b679">ON_PolylineCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#adb24ff5e0770fa30c5997f76a9ad97bf">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#af3e4c0527f781df4bc3ed49571dbef40">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="ab1b9d5f72971851b4790f4f47d51a846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1b9d5f72971851b4790f4f47d51a846">&#9670;&nbsp;</a></span>DuplicateCurve()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a>* ON_Curve::DuplicateCurve </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get a duplicate of the curve. </p>
<dl class="section return"><dt>Returns</dt><dd>A duplicate of the curve. </dd></dl>
<p>The caller must delete the returned curve. For non-ON_CurveProxy objects, this simply duplicates the curve using ON_Object::Duplicate. For <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html">ON_CurveProxy</a> objects, this duplicates the actual proxy curve geometry and, if necessary, trims and reverse the result to that the returned curve's parameterization and locus match the proxy curve's. </p>
<p>Reimplemented in <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#ae78a31f3b306672cde749a04cba9bbda">ON_CurveProxy</a>, <a class="el" href="../../d8/db7/class_o_n___poly_edge_segment.html#a17b99e25199149e3b64882c40edee55a">ON_PolyEdgeSegment</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a1004ba72034176a7324b73fce2567c2b">ON_PolyCurve</a>, and <a class="el" href="../../d6/d10/class_o_n___poly_edge_curve.html#a72c5a083ee70b4bc248ac6894b06089a">ON_PolyEdgeCurve</a>.</p>
</div>
</div>
<a id="a37944a7a4d1c3d7e28afcbc9184ef799"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37944a7a4d1c3d7e28afcbc9184ef799">&#9670;&nbsp;</a></span>Ev1Der()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::Ev1Der </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;&#160;</td>
<td class="paramname"><em>point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>first_derivative</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate first derivative at a parameter with error checking. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
<tr><td class="paramname">point</td><td>[out] value of curve at t</td></tr>
<tr><td class="paramname">first_derivative</td><td>[out] value of first derivative at t</td></tr>
<tr><td class="paramname">side</td><td>[in] optional - determines which side to evaluate from =0 default &lt;0 to evaluate from below, &gt;0 to evaluate from above</td></tr>
<tr><td class="paramname">hint</td><td>[in/out] optional evaluation hint used to speed repeated evaluations</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if unable to evaluate. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a82170503403c1f8c84286619f6179ead" title="Evaluate point at a parameter with error checking. ">ON_Curve::EvPoint</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a1388f1ac523a1e8abca222eab2d4ce7a" title="Evaluate second derivative at a parameter with error checking. ">ON_Curve::Ev2Der</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a4e223877e0a89d31e0ed404625db70ef" title="Evaluate unit tangent at a parameter with error checking. ">ON_Curve::EvTangent</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#acb8caa121873abcf53f050a8953a70bb" title="This evaluator actually does all the work. The other ON_Curve evaluation tools call this virtual func...">ON_Curve::Evaluate</a></dd></dl>
</div>
</div>
<a id="a1388f1ac523a1e8abca222eab2d4ce7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1388f1ac523a1e8abca222eab2d4ce7a">&#9670;&nbsp;</a></span>Ev2Der()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::Ev2Der </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;&#160;</td>
<td class="paramname"><em>point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>first_derivative</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>second_derivative</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate second derivative at a parameter with error checking. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
<tr><td class="paramname">point</td><td>[out] value of curve at t</td></tr>
<tr><td class="paramname">first_derivative</td><td>[out] value of first derivative at t</td></tr>
<tr><td class="paramname">second_derivative</td><td>[out] value of second derivative at t</td></tr>
<tr><td class="paramname">side</td><td>[in] optional - determines which side to evaluate from =0 default &lt;0 to evaluate from below, &gt;0 to evaluate from above</td></tr>
<tr><td class="paramname">hint</td><td>[in/out] optional evaluation hint used to speed repeated evaluations</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if unable to evaluate. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a37944a7a4d1c3d7e28afcbc9184ef799" title="Evaluate first derivative at a parameter with error checking. ">ON_Curve::Ev1Der</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#affcb2a2551d248110c8e0dc610e6a9b1" title="Evaluate unit tangent and curvature at a parameter with error checking. ">ON_Curve::EvCurvature</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#acb8caa121873abcf53f050a8953a70bb" title="This evaluator actually does all the work. The other ON_Curve evaluation tools call this virtual func...">ON_Curve::Evaluate</a></dd></dl>
</div>
</div>
<a id="acb8caa121873abcf53f050a8953a70bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb8caa121873abcf53f050a8953a70bb">&#9670;&nbsp;</a></span>Evaluate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::Evaluate </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>der_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>v_stride</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This evaluator actually does all the work. The other <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> evaluation tools call this virtual function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter ( usually in <a class="el" href="../../d4/d5a/class_o_n___curve.html#ae3a1e3ea7c924246a43754aa03790432">Domain()</a> ).</td></tr>
<tr><td class="paramname">der_count</td><td>[in] (&gt;=0) number of derivatives to evaluate</td></tr>
<tr><td class="paramname">v_stride</td><td>[in] (&gt;=<a class="el" href="../../df/de0/class_o_n___geometry.html#a0d66ab16e2fddfd1b3e6cf3d6ebbd364" title="Dimension of the object. ">Dimension()</a>) stride to use for the v[] array</td></tr>
<tr><td class="paramname">v</td><td>[out] array of length (der_count+1)*v_stride curve(t) is returned in (v[0],...,v[m_dim-1]), curve'(t) is retuned in (v[v_stride],...,v[v_stride+m_dim-1]), curve"(t) is retuned in (v[2*v_stride],...,v[2*v_stride+m_dim-1]), etc.</td></tr>
<tr><td class="paramname">side</td><td>[in] optional - determines which side to evaluate from =0 default &lt;0 to evaluate from below, &gt;0 to evaluate from above</td></tr>
<tr><td class="paramname">hint</td><td>[in/out] optional evaluation hint used to speed repeated evaluations</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if unable to evaluate. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a82170503403c1f8c84286619f6179ead" title="Evaluate point at a parameter with error checking. ">ON_Curve::EvPoint</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a37944a7a4d1c3d7e28afcbc9184ef799" title="Evaluate first derivative at a parameter with error checking. ">ON_Curve::Ev1Der</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a1388f1ac523a1e8abca222eab2d4ce7a" title="Evaluate second derivative at a parameter with error checking. ">ON_Curve::Ev2Der</a></dd></dl>
<p>Implemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a11fb002fd7df1169eac0a760cc77cb2a">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a36cea77b88d9f45c663a4027f53c7ace">ON_PolylineCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a8ea720d4b63d9ed5074482589323c53d">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a8a301fc3cf9024218794421f4b916c0f">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a8f6cd5138c7fbf49883c2045501c5944">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a3507acd1622368d7936906ecb9a0202b">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a9ac83ba2ce51fc24c069d0fcea15ae9e">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="ad625501436509ff71c9fa21778ad2459"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad625501436509ff71c9fa21778ad2459">&#9670;&nbsp;</a></span>EvaluatePoint()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::EvaluatePoint </td>
<td>(</td>
<td class="paramtype">const class <a class="el" href="../../d3/d80/class_o_n___obj_ref.html">ON_ObjRef</a> &amp;&#160;</td>
<td class="paramname"><em>objref</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;&#160;</td>
<td class="paramname"><em>P</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual <a class="el" href="../../df/de0/class_o_n___geometry.html" title="Base class for all geometry classes that must provide runtime class id. Provides interface for common...">ON_Geometry</a> override </p>
<p>Reimplemented from <a class="el" href="../../df/de0/class_o_n___geometry.html#adcb646d6ca698c092b73f2f05373bfc2">ON_Geometry</a>.</p>
<p>Reimplemented in <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#afd3c1a43385302940e38d06fe3eac609">ON_PolyCurve</a>.</p>
</div>
</div>
<a id="affcb2a2551d248110c8e0dc610e6a9b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affcb2a2551d248110c8e0dc610e6a9b1">&#9670;&nbsp;</a></span>EvCurvature()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::EvCurvature </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;&#160;</td>
<td class="paramname"><em>point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>tangent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>kappa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate unit tangent and curvature at a parameter with error checking. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
<tr><td class="paramname">point</td><td>[out] value of curve at t</td></tr>
<tr><td class="paramname">tangent</td><td>[out] value of unit tangent</td></tr>
<tr><td class="paramname">kappa</td><td>[out] value of curvature vector</td></tr>
<tr><td class="paramname">side</td><td>[in] optional - determines which side to evaluate from =0 default &lt;0 to evaluate from below, &gt;0 to evaluate from above</td></tr>
<tr><td class="paramname">hint</td><td>[in/out] optional evaluation hint used to speed repeated evaluations</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if unable to evaluate. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a91ad780521ca0c126603533731882dc2" title="Evaluate the curvature vector at a parameter. ">ON_Curve::CurvatureAt</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a1388f1ac523a1e8abca222eab2d4ce7a" title="Evaluate second derivative at a parameter with error checking. ">ON_Curve::Ev2Der</a>, ON_EvCurvature</dd></dl>
</div>
</div>
<a id="a82170503403c1f8c84286619f6179ead"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82170503403c1f8c84286619f6179ead">&#9670;&nbsp;</a></span>EvPoint()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::EvPoint </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;&#160;</td>
<td class="paramname"><em>point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate point at a parameter with error checking. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
<tr><td class="paramname">point</td><td>[out] value of curve at t</td></tr>
<tr><td class="paramname">side</td><td>[in] optional - determines which side to evaluate from =0 default &lt;0 to evaluate from below, &gt;0 to evaluate from above</td></tr>
<tr><td class="paramname">hint</td><td>[in/out] optional evaluation hint used to speed repeated evaluations</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if unable to evaluate. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#abe5aefbc95ce86f017e69bf76cbbe03f" title="Evaluate point at a parameter. ">ON_Curve::PointAt</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a4e223877e0a89d31e0ed404625db70ef" title="Evaluate unit tangent at a parameter with error checking. ">ON_Curve::EvTangent</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#acb8caa121873abcf53f050a8953a70bb" title="This evaluator actually does all the work. The other ON_Curve evaluation tools call this virtual func...">ON_Curve::Evaluate</a></dd></dl>
</div>
</div>
<a id="a4e223877e0a89d31e0ed404625db70ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e223877e0a89d31e0ed404625db70ef">&#9670;&nbsp;</a></span>EvTangent()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::EvTangent </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &amp;&#160;</td>
<td class="paramname"><em>point</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>tangent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate unit tangent at a parameter with error checking. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
<tr><td class="paramname">point</td><td>[out] value of curve at t</td></tr>
<tr><td class="paramname">tangent</td><td>[out] value of unit tangent</td></tr>
<tr><td class="paramname">side</td><td>[in] optional - determines which side to evaluate from =0 default &lt;0 to evaluate from below, &gt;0 to evaluate from above</td></tr>
<tr><td class="paramname">hint</td><td>[in/out] optional evaluation hint used to speed repeated evaluations</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if unable to evaluate. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a8de2247b5bb20d1b67d40c274c17697a" title="Evaluate unit tangent vector at a parameter. ">ON_Curve::TangentAt</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a37944a7a4d1c3d7e28afcbc9184ef799" title="Evaluate first derivative at a parameter with error checking. ">ON_Curve::Ev1Der</a></dd></dl>
</div>
</div>
<a id="ad590804af708aa05f56c27b6b3982ef7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad590804af708aa05f56c27b6b3982ef7">&#9670;&nbsp;</a></span>Extend()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::Extend </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> &amp;&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Pure virtual function. Default returns false. Where possible, analytically extends curve to include domain. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">domain</td><td>[in] if domain is not included in curve domain, curve will be extended so that its domain includes domain. Will not work if curve is closed. Original curve is identical to the restriction of the resulting curve to the original curve domain,</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a7c342a51d7f2af1c34aeb20cd924bdb0">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a7c30edd0aa16113b9f5ea330dc46ea60">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a667134c8afbabcd288b27860bd1feb15">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ac21a23d57a135c5352c836874958dd2d">ON_ArcCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a9b41589d25272d59b891af903297b14e">ON_LineCurve</a>.</p>
</div>
</div>
<a id="acfb31835869e2633469c36eca4a08e9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfb31835869e2633469c36eca4a08e9b">&#9670;&nbsp;</a></span>FirstSpanIsLinear() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::FirstSpanIsLinear </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>min_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">min_length</td><td>[in] minimum length of a linear span</td></tr>
<tr><td class="paramname">tolerance</td><td>[in] distance tolerance to use when checking linearity. Returns true if the span is a non-degenrate line. This means:<ul>
<li>dimension = 2 or 3</li>
<li>The length of the the line segment from the span's initial point to the span's control point is &gt;= min_length.</li>
<li>The maximum distance from the line segment to the span is &lt;= tolerance and the span increases monotonically in the direction of the line segment.</li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a85aa9ee2224714bc466f0bedaa569410"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85aa9ee2224714bc466f0bedaa569410">&#9670;&nbsp;</a></span>FirstSpanIsLinear() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::FirstSpanIsLinear </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>min_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/d6f/class_o_n___line.html">ON_Line</a> *&#160;</td>
<td class="paramname"><em>span_line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa6cf4d04b6fe809e888d9bd3c32038a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6cf4d04b6fe809e888d9bd3c32038a4">&#9670;&nbsp;</a></span>FrameAt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::FrameAt </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;&#160;</td>
<td class="paramname"><em>plane</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a 3d frame at a parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
<tr><td class="paramname">plane</td><td>[out] the frame is returned here</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful </dd></dl>
<dl class="section see"><dt>See also</dt><dd>ON_Curve::PointAt, ON_Curve::TangentAt,, ON_Curve::Ev1Der, Ev2Der</dd></dl>
</div>
</div>
<a id="ad64be6b1a263a59bfc740199d6de8ace"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad64be6b1a263a59bfc740199d6de8ace">&#9670;&nbsp;</a></span>GetCurveParameterFromNurbFormParameter()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::GetCurveParameterFromNurbFormParameter </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>nurbs_t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>curve_t</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a NURBS curve parameter to a curve parameter </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nurbs_t</td><td>[in] nurbs form parameter</td></tr>
<tr><td class="paramname">curve_t</td><td>[out] curve parameter </td></tr>
</table>
</dd>
</dl>
<p>If GetNurbForm returns 2, this function converts the curve parameter to the NURBS curve parameter.</p>
<dl class="section see"><dt>See also</dt><dd>ON_Curve::GetNurbForm, ON_Curve::GetNurbFormParameterFromCurveParameter</dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a9d063ad50429941d88c1aac8d49d6fe2">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#ad40369c388c1f43f95e51e42635f21dd">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a7f7ace839771d232a4b1224288ddcfab">ON_PolyCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a5fc522dafb8bd72351da9b168de4607e">ON_CurveProxy</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a315e11d05b4dd6c3bc138fb5b870934e">ON_LineCurve</a>, and <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a771a02c1939aac24b4e972415a362080">ON_ArcCurve</a>.</p>
</div>
</div>
<a id="a36d4d80c58ea92dde6a1298ed8141a66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36d4d80c58ea92dde6a1298ed8141a66">&#9670;&nbsp;</a></span>GetDomain()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::GetDomain </td>
<td>(</td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>t0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>t1</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>curve interface </p>
<p>Gets domain of the curve </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t0</td><td>[out]</td></tr>
<tr><td class="paramname">t1</td><td>[out] domain is [*t0, *t1]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
</div>
</div>
<a id="a2deaf514586ac4b16daa45a97d4bd8e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2deaf514586ac4b16daa45a97d4bd8e1">&#9670;&nbsp;</a></span>GetNextDiscontinuity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::GetNextDiscontinuity </td>
<td>(</td>
<td class="paramtype">ON::continuity&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>dtype</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>cos_angle_tolerance</em> = <code>ON_DEFAULT_ANGLE_TOLERANCE_COSINE</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>curvature_tolerance</em> = <code>ON_SQRT_EPSILON</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Search for a derivatitive, tangent, or curvature discontinuity. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">c</td><td>[in] type of continity to test for.</td></tr>
<tr><td class="paramname">t0</td><td>[in] Search begins at t0. If there is a discontinuity at t0, it will be ignored. This makes it possible to repeatedly call GetNextDiscontinuity and step through the discontinuities.</td></tr>
<tr><td class="paramname">t1</td><td>[in] (t0 != t1) If there is a discontinuity at t1 is will be ingored unless c is a locus discontinuity type and t1 is at the start or end of the curve.</td></tr>
<tr><td class="paramname">t</td><td>[out] if a discontinuity is found, then *t reports the parameter at the discontinuity.</td></tr>
<tr><td class="paramname">hint</td><td>[in/out] if GetNextDiscontinuity will be called repeatedly, passing a "hint" with initial value *hint=0 will increase the speed of the search.</td></tr>
<tr><td class="paramname">dtype</td><td>[out] if not nullptr, *dtype reports the kind of discontinuity found at *t. A value of 1 means the first derivative or unit tangent was discontinuous. A value of 2 means the second derivative or curvature was discontinuous. A value of 0 means teh curve is not closed, a locus discontinuity test was applied, and t1 is at the start of end of the curve. If 'c', the type of continuity to test for is ON::continuity::Gsmooth_continuous and the curvature changes from curved to 0 or 0 to curved and there is no tangency kink dtype is returns 3</td></tr>
<tr><td class="paramname">cos_angle_tolerance</td><td>[in] default = cos(1 degree) Used only when c is ON::continuity::G1_continuous or ON::continuity::G2_continuous. If the cosine of the angle between two tangent vectors is &lt;= cos_angle_tolerance, then a G1 discontinuity is reported.</td></tr>
<tr><td class="paramname">curvature_tolerance</td><td>[in] (default = ON_SQRT_EPSILON) Used only when c is ON::continuity::G2_continuous. If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| &gt; curvature_tolerance, then a curvature discontinuity is reported.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><p class="startdd">Parametric continuity tests c = (C0_continuous, ..., G2_continuous): </p><pre class="fragment">true if a parametric discontinuity was found strictly
between t0 and t1. Note well that all curves are
parametrically continuous at the ends of their domains.
</pre><p class="enddd">Locus continuity tests c = (C0_locus_continuous, ...,G2_locus_continuous): </p><pre class="fragment">true if a locus discontinuity was found strictly between
t0 and t1 or at t1 is the at the end of a curve.
Note well that all open curves (IsClosed()=false) are locus
discontinuous at the ends of their domains. All closed
curves (IsClosed()=true) are at least C0_locus_continuous at
the ends of their domains.
</pre> </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a85491dd8ecbed5fc89b3e3d7e6b19064">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#ac54f371ac53ed8bbdf2a39501a05583d">ON_PolylineCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a19ecbe43f33904b55cf59af5ec156203">ON_CurveProxy</a>, and <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a64aad28eb98b9cfd4799bc3cd13e7d73">ON_PolyCurve</a>.</p>
</div>
</div>
<a id="a67dd944c24cda3d319fa5ac73bb95c2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67dd944c24cda3d319fa5ac73bb95c2e">&#9670;&nbsp;</a></span>GetNurbForm()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int ON_Curve::GetNurbForm </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a> &amp;&#160;</td>
<td class="paramname"><em>nurbs_curve</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>0.0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> *&#160;</td>
<td class="paramname"><em>subdomain</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get a NURBS curve representation of this curve. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nurbs_curve</td><td>[out] NURBS representation returned here</td></tr>
<tr><td class="paramname">tolerance</td><td>[in] tolerance to use when creating NURBS representation.</td></tr>
<tr><td class="paramname">subdomain</td><td>[in] if not nullptr, then the NURBS representation for this portion of the curve is returned.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 unable to create NURBS representation with desired accuracy. 1 success - returned NURBS parameterization matches the curve's to wthe desired accuracy 2 success - returned NURBS point locus matches the curve's to the desired accuracy and the domain of the NURBS curve is correct. On However, This curve's parameterization and the NURBS curve parameterization may not match to the desired accuracy. This situation happens when getting NURBS representations of curves that have a transendental parameterization like circles </dd></dl>
<p>This is a low-level virtual function. If you do not need the parameterization information provided by the return code, then <a class="el" href="../../d4/d5a/class_o_n___curve.html#a667f621c7004f9f44f0d68f2267b9a0b" title="Get a NURBS curve representation of this curve. ">ON_Curve::NurbsCurve</a> may be easier to use. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a667f621c7004f9f44f0d68f2267b9a0b" title="Get a NURBS curve representation of this curve. ">ON_Curve::NurbsCurve</a></dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a6d06bebc8e4e0d16bb025792228c6a98">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a10b57254d68c45309923f87d370c5ba4">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a80dc0a9f4905fba6b97a028632575837">ON_PolyCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a34e3e17ec977eb8e7fdc0b65d681ca23">ON_CurveProxy</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a08eb431863274631c060b085aa31267c">ON_LineCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a922055f2e9c1033a125e2f1043bbced2">ON_ArcCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#aacf0e62c19e615d31e771c7ea4c198c9">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="ae3ed534f071a515ea5270acf2a04e6e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae3ed534f071a515ea5270acf2a04e6e7">&#9670;&nbsp;</a></span>GetNurbFormParameterFromCurveParameter()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::GetNurbFormParameterFromCurveParameter </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>curve_t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>nurbs_t</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert a curve parameter to a NURBS curve parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">curve_t</td><td>[in] curve parameter</td></tr>
<tr><td class="paramname">nurbs_t</td><td>[out] nurbs form parameter </td></tr>
</table>
</dd>
</dl>
<p>If GetNurbForm returns 2, this function converts the curve parameter to the NURBS curve parameter.</p>
<dl class="section see"><dt>See also</dt><dd>ON_Curve::GetNurbForm, ON_Curve::GetCurveParameterFromNurbFormParameter</dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#aaf1d5b3b9b27cd73dee452851d8c2a03">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#ac169c931384f483d5d137ac7a53925e0">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#ae4102fff634d6604ac24e845e32675d6">ON_PolyCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#ad85e0dd860d2900911b9ba2407bd1ba7">ON_CurveProxy</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a5517d0f65cd1e54a14ba6233b5df8787">ON_LineCurve</a>, and <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a6f74bf5f3564f1ba50a96d31f54df40e">ON_ArcCurve</a>.</p>
</div>
</div>
<a id="ada3a3e9951cc02187a6a9a0e715e70e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada3a3e9951cc02187a6a9a0e715e70e0">&#9670;&nbsp;</a></span>GetParameterTolerance()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::GetParameterTolerance </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>tminus</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>tplus</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns maximum algebraic degree of any span or a good estimate if curve spans are not algebraic. </p>
<dl class="section return"><dt>Returns</dt><dd>degree </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#af0ce6f18d5218dd90647fd29f4a7ee38">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#ada21da6852e886735e6bf78027ba6312">ON_CurveProxy</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a0b874ea4adf39f6dd396e4011394300b">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="ae619c78b795518c251c5ac32d34d568f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae619c78b795518c251c5ac32d34d568f">&#9670;&nbsp;</a></span>GetSpanVector()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::GetSpanVector </td>
<td>(</td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>knots</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get number of parameters of "knots". </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">knots</td><td>[out] an array of length <a class="el" href="../../d4/d5a/class_o_n___curve.html#ad162b90ba333e4f3dd5b13823e1b5f27" title="Get number of nonempty smooth (c-infinity) spans in curve ">SpanCount()</a>+1 is filled in with the parameters where the curve is not smooth (C-infinity).</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful </dd></dl>
<p>Implemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#af310f29d64d40cc449e7a727b3352750">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a66b9a26238437790a2907528c176dd8f">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a2451286130d423f462a69cb5e51de1ba">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#ab9492f00e2be26bee9985c0b841d038a">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a034e2f8bbdf6997005a87f6c3636336e">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#aa13d878f8f59df63759b20740dcd8656">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a927e6e0888b3e410bc366df33823083f">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="a4cbd5def723c9174ed88f9ca4db60c62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4cbd5def723c9174ed88f9ca4db60c62">&#9670;&nbsp;</a></span>GetSpanVectorIndex()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::GetSpanVectorIndex </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>side</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>span_vector_index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> *&#160;</td>
<td class="paramname"><em>span_domain</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a07da6630700d2c2ce04f0bc3178b02b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07da6630700d2c2ce04f0bc3178b02b0">&#9670;&nbsp;</a></span>GetTightBoundingBox()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::GetTightBoundingBox </td>
<td>(</td>
<td class="paramtype">class <a class="el" href="../../d1/d17/class_o_n___bounding_box.html">ON_BoundingBox</a> &amp;&#160;</td>
<td class="paramname"><em>tight_bbox</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bGrowBox</em> = <code>false</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const class <a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> *&#160;</td>
<td class="paramname"><em>xform</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual <a class="el" href="../../df/de0/class_o_n___geometry.html" title="Base class for all geometry classes that must provide runtime class id. Provides interface for common...">ON_Geometry</a> GetTightBoundingBox override </p>
<p>Reimplemented from <a class="el" href="../../df/de0/class_o_n___geometry.html#ab59968e400d15d016517b7b4f2e32ea4">ON_Geometry</a>.</p>
<p>Reimplemented in <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#aea704b360c8e9e72a27429136ec0dc8e">ON_PolyCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a88e2938385e3356a42b4a0146a64f340">ON_PolylineCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#ac705f9c434c136adda86103d1164577a">ON_LineCurve</a>.</p>
</div>
</div>
<a id="a25f556492601b4e679e8416cee60c529"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25f556492601b4e679e8416cee60c529">&#9670;&nbsp;</a></span>HasNurbForm()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int ON_Curve::HasNurbForm </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Does a NURBS curve representation of this curve. </p>
<dl class="section return"><dt>Returns</dt><dd>0 unable to create NURBS representation with desired accuracy. 1 success - NURBS parameterization matches the curve's to wthe desired accuracy 2 success - NURBS point locus matches the curve's and the domain of the NURBS curve is correct. However, This curve's parameterization and the NURBS curve parameterization may not match. This situation happens when getting NURBS representations of curves that have a transendental parameterization like circles </dd></dl>
<p>This is a low-level virtual function. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a67dd944c24cda3d319fa5ac73bb95c2e" title="Get a NURBS curve representation of this curve. ">ON_Curve::GetNurbForm</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a667f621c7004f9f44f0d68f2267b9a0b" title="Get a NURBS curve representation of this curve. ">ON_Curve::NurbsCurve</a></dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#ad87d313a81d6847c3bc93548d2c49096">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a2422001144d07ad9aa06cea2e7d67863">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a4f5cdfa2e5abdb01ea0c22e2beeff865">ON_PolyCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#aac29bac15751fab5fef807ecfcb518e0">ON_CurveProxy</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#ac222f7c253bcdab28441090e0a856331">ON_LineCurve</a>, and <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ad9e88e771f0e831a59672e80890347c4">ON_ArcCurve</a>.</p>
</div>
</div>
<a id="adb5f04bc1eb13842d60c7c9778740ca8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb5f04bc1eb13842d60c7c9778740ca8">&#9670;&nbsp;</a></span>IsArc()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsArc </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *&#160;</td>
<td class="paramname"><em>plane</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d3/ddf/class_o_n___arc.html">ON_Arc</a> *&#160;</td>
<td class="paramname"><em>arc</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>ON_ZERO_TOLERANCE</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test a curve to see if the locus if its points is an arc or circle. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">plane</td><td>[in] if not nullptr, test is performed in this plane</td></tr>
<tr><td class="paramname">arc</td><td>[out] if not nullptr and true is returned, then arc parameters are filled in</td></tr>
<tr><td class="paramname">tolerance</td><td>[in] tolerance to use when checking</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ON_Arc.m_angle &gt; 0 if curve locus is an arc between specified points. If ON_Arc.m_angle is 2.0*ON_PI, then the curve is a circle. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a9b9a8886fe40bdf03846f4f1a4f94e23">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a4b17f3e8202cc9affc5a5805dd31139d">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#af1a9bf6ff5716156093fa9e8c5fdb047">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a3772b0e7c43198673457b00cb7159911">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a1b77677bc00ad99bc84c2464571a4a6d">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a99292a6c3ba6c395b2e069bcfd9f07bc">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a02f87b390eae841fb0c92dc956cc360a">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="a4cab622314d16eaf41182a427d5c36e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4cab622314d16eaf41182a427d5c36e6">&#9670;&nbsp;</a></span>IsArcAt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::IsArcAt </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *&#160;</td>
<td class="paramname"><em>plane</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d3/ddf/class_o_n___arc.html">ON_Arc</a> *&#160;</td>
<td class="paramname"><em>arc</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>ON_ZERO_TOLERANCE</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>t0</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"><em>t1</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] curve parameter</td></tr>
<tr><td class="paramname">plane</td><td>[in] if not nullptr, test is performed in this plane</td></tr>
<tr><td class="paramname">arc</td><td>[out] if not nullptr and true is returned, then arc parameters are filled in</td></tr>
<tr><td class="paramname">tolerance</td><td>[in] tolerance to use when checking</td></tr>
<tr><td class="paramname">t0</td><td>[out] if not nullptr, and then *t0 is set to the parameter at the start of the G2 curve segment that was tested.</td></tr>
<tr><td class="paramname">t1</td><td>[out] if not nullptr, and then *t0 is set to the parameter at the start of the G2 curve segment that was tested.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if the paramter t is on a arc segment of the curve. </dd></dl>
</div>
</div>
<a id="a0ba05cb9ae319f5723a43755fb9c2d3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ba05cb9ae319f5723a43755fb9c2d3f">&#9670;&nbsp;</a></span>IsClosable()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::IsClosable </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>min_abs_size</em> = <code>0.0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>min_rel_size</em> = <code>10.0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Decide if it makes sense to close off this curve by moving the endpoint to the start based on start-end gap size and length of curve as approximated by chord defined by 6 points. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">tolerance</td><td>[in] maximum allowable distance between start and end. if start - end gap is greater than tolerance, returns false</td></tr>
<tr><td class="paramname">min_abs_size</td><td>[in] if greater than 0.0 and none of the interior sampled points are at least min_abs_size from start, returns false.</td></tr>
<tr><td class="paramname">min_rel_size</td><td>[in] if greater than 1.0 and chord length is less than min_rel_size*gap, returns false.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if start and end points are close enough based on above conditions. </dd></dl>
</div>
</div>
<a id="a8108d949eee27fb0ab7b2b4339df5b7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8108d949eee27fb0ab7b2b4339df5b7f">&#9670;&nbsp;</a></span>IsClosed()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsClosed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test a curve to see if it is closed. </p>
<dl class="section return"><dt>Returns</dt><dd>true if the curve is closed. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#ab4fe8e5f17cb1b93507b333c515f632e">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#aa8b99b3d2672ae0ac00beb2dafe98245">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#afdf206505ab2db09cb050acc156a4e18">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a87c4768bb74bc28a11e300895278a3c4">ON_PolyCurve</a>, <a class="el" href="../../dd/de8/class_o_n___brep_edge.html#a20f153f6637ff7f125ca0892fa2559ff">ON_BrepEdge</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ad0874ef2049a1d5a57b514991204323e">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a46f46b509edf8aa3aac2f260135cb66c">ON_LineCurve</a>, <a class="el" href="../../d8/db7/class_o_n___poly_edge_segment.html#a4a9bc5069207ba7df5ba1faa612eed35">ON_PolyEdgeSegment</a>, <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#aa461a0676d6596007c6a3f4638b69572">ON_CurveOnSurface</a>, and <a class="el" href="../../d6/d10/class_o_n___poly_edge_curve.html#a594727ba20edd4c9c996863a5669921a">ON_PolyEdgeCurve</a>.</p>
</div>
</div>
<a id="ac0a69004a8792a80abb7c9ee19f98f6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0a69004a8792a80abb7c9ee19f98f6a">&#9670;&nbsp;</a></span>IsContinuous()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsContinuous </td>
<td>(</td>
<td class="paramtype">ON::continuity&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>hint</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>point_tolerance</em> = <code>ON_ZERO_TOLERANCE</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>d1_tolerance</em> = <code>ON_ZERO_TOLERANCE</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>d2_tolerance</em> = <code>ON_ZERO_TOLERANCE</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>cos_angle_tolerance</em> = <code>ON_DEFAULT_ANGLE_TOLERANCE_COSINE</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>curvature_tolerance</em> = <code>ON_SQRT_EPSILON</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test continuity at a curve parameter value. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">c</td><td>[in] type of continuity to test for. Read ON::continuity comments for details.</td></tr>
<tr><td class="paramname">t</td><td>[in] parameter to test</td></tr>
<tr><td class="paramname">hint</td><td>[in] evaluation hint</td></tr>
<tr><td class="paramname">point_tolerance</td><td>[in] if the distance between two points is greater than point_tolerance, then the curve is not C0.</td></tr>
<tr><td class="paramname">d1_tolerance</td><td>[in] if the difference between two first derivatives is greater than d1_tolerance, then the curve is not C1.</td></tr>
<tr><td class="paramname">d2_tolerance</td><td>[in] if the difference between two second derivatives is greater than d2_tolerance, then the curve is not C2.</td></tr>
<tr><td class="paramname">cos_angle_tolerance</td><td>[in] default = cos(1 degree) Used only when c is ON::continuity::G1_continuous or ON::continuity::G2_continuous. If the cosine of the angle between two tangent vectors is &lt;= cos_angle_tolerance, then a G1 discontinuity is reported.</td></tr>
<tr><td class="paramname">curvature_tolerance</td><td>[in] (default = ON_SQRT_EPSILON) Used only when c is ON::continuity::G2_continuous or ON::continuity::Gsmooth_continuous. ON::continuity::G2_continuous: If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| &gt; curvature_tolerance, then a curvature discontinuity is reported. ON::continuity::Gsmooth_continuous: If K0 and K1 are curvatures evaluated from above and below and the angle between K0 and K1 is at least twice angle tolerance or ||K0| - |K1|| &gt; (max(|K0|,|K1|) &gt; curvature_tolerance, then a curvature discontinuity is reported.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the curve has at least the c type continuity at the parameter t. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a0e4af21d4300a5c91ac3728561303687">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a1458d1f004ca07e726216153b1933100">ON_PolylineCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#ab1087059ce618ad03498c7f5a26ad087">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#aadb4505ecc06a2b4185e6e42f8979da6">ON_PolyCurve</a>, and <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a17ad23ae7feb6b12f0169509c81ac2f2">ON_ArcCurve</a>.</p>
</div>
</div>
<a id="a7beb8c89aea4828ab40a009853416481"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7beb8c89aea4828ab40a009853416481">&#9670;&nbsp;</a></span>IsEllipse()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsEllipse </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *&#160;</td>
<td class="paramname"><em>plane</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d6/dd8/class_o_n___ellipse.html">ON_Ellipse</a> *&#160;</td>
<td class="paramname"><em>ellipse</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>ON_ZERO_TOLERANCE</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7c480c610e37703041d9eacb502d5ae8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c480c610e37703041d9eacb502d5ae8">&#9670;&nbsp;</a></span>IsInPlane()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsInPlane </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;&#160;</td>
<td class="paramname"><em>test_plane</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>ON_ZERO_TOLERANCE</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test a curve to see if it lies in a specific plane. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">test_plane</td><td>[in]</td></tr>
<tr><td class="paramname">tolerance</td><td>[in] tolerance to use when checking</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the maximum distance from the curve to the test_plane is &lt;= tolerance. </dd></dl>
<p>Implemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#acefc81c1d53957b7496914449d079231">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#aa91e815b087125e831a55ecdac871723">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a9eeb76f0f0d1a434b0bc06c35f2085cf">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a3f18ad614b30dee3c01b60f560d15b01">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ab5d9dc810b82ba1df3e049a93bd8838e">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#af336283e72bd79d076c09e0f87df0356">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a10241e2e99afa837572fd7cee656532d">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="a325716a9735ab59416bf6800a23ce5fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a325716a9735ab59416bf6800a23ce5fc">&#9670;&nbsp;</a></span>IsLinear()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsLinear </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>ON_ZERO_TOLERANCE</code></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test a curve to see if the locus if its points is a line segment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">tolerance</td><td>[in] // tolerance to use when checking linearity</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the ends of the curve are farther than tolerance apart and the maximum distance from any point on the curve to the line segment connecting the curve's ends is &lt;= tolerance. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a90cf938b14c3effd8d86b52e416dca5d">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#afa4f43e323cbdedc8d88a9e5a4e3ecce">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a2bd48fa74d7c9d90bb1f9caa2e1f8dd3">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a3592b84ed65f1ee94fb248a27c8ac1a9">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a34f98ef96e03be78649fe3186a77bb21">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a5c9b951e666eee31930a790492ba6e98">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#aea2ebbafaebda367a66194a77fb1e358">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="ad27af42168a1be8f54fff24aed354aab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad27af42168a1be8f54fff24aed354aab">&#9670;&nbsp;</a></span>IsPeriodic()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsPeriodic </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test a curve to see if it is periodic. </p>
<dl class="section return"><dt>Returns</dt><dd>true if the curve is closed and at least C2 at the start/end. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#aa8737f336e0ff7016aeb51dc01fbe0a3">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a1833b16ce89f3d8ef5bae3d0c5c50f7c">ON_PolylineCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a26bf56801741887618e3f4e4e51e3c32">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#acf2434382de42f43eb4077267538d65d">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a099bf2774d9d7f1035c2306295cf4d7b">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#afa4df948aae508b0c06a4caf79c381ba">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#af12e9cebab464f58af35d8eae26c594b">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="aa98dcc86caf6da5cdac543e52d695bd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa98dcc86caf6da5cdac543e52d695bd4">&#9670;&nbsp;</a></span>IsPlanar()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::IsPlanar </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> *&#160;</td>
<td class="paramname"><em>plane</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>ON_ZERO_TOLERANCE</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test a curve to see if it is planar. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">plane</td><td>[out] if not nullptr and true is returned, the plane parameters are filled in.</td></tr>
<tr><td class="paramname">tolerance</td><td>[in] tolerance to use when checking</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if there is a plane such that the maximum distance from the curve to the plane is &lt;= tolerance. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a89189d381ed587c088349810aa42340e">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#aa1ba8f85a8971b6a4068e9a641bb1983">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a297224027c9f3a471cf18826404a06c6">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#ad691dbdc567696fb75038a32f4b1de11">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a2a657bf150bde3b54bd5e90f156c7da3">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#ad0847f01462351cf5e08a27c6772e2d0">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#ac600892dd5e7a6493120df5a6bb5dcd1">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="a467d9a30eb67c198df47da3abc1a87cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a467d9a30eb67c198df47da3abc1a87cd">&#9670;&nbsp;</a></span>IsPolyline()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int ON_Curve::IsPolyline </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &gt; *&#160;</td>
<td class="paramname"><em>pline_points</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; double &gt; *&#160;</td>
<td class="paramname"><em>pline_t</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Several types of <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> can have the form of a polyline including a degree 1 <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a>, an <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html">ON_PolylineCurve</a>, and an <a class="el" href="../../d8/d00/class_o_n___poly_curve.html" title="An ON_PolyCurve is an ON_Curve represented by a sequence of contiguous ON_Curve segments. A valid polycurve is represented by an array m_segment of Count()&gt;=1 curve objects and a strictly increasing array m_t of Count()+1 parameter values. The i-th curve segment, when considered as part of the polycurve, is affinely reparamaterized from m_t[i] to m_t[i+1], i.e., m_segment[i].Domain()[0] is mapped to m_t[i] and m_segment[i].Domain()[1] is mapped to m_t[i+1]. ">ON_PolyCurve</a> all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pline_points</td><td>[out] if not nullptr and true is returned, then the points of the polyline form are returned here.</td></tr>
<tr><td class="paramname">t</td><td>[out] if not nullptr and true is returned, then the parameters of the polyline points are returned here.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>table 0 curve is not some form of a polyline &gt;=2 number of points in polyline form </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#aee58763e8a650a162fd871a69e4be785">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a18342e0d1ec68aa2156b243cc7139226">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#ae56853f1154b45740123292281c28777">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#ad525eefcd332b79d0ec02383527dc4f6">ON_PolyCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#ac36cd7ee76f7b122cc6522b865b78586">ON_LineCurve</a>.</p>
</div>
</div>
<a id="ae26e3ac4106357457d997acd4a989307"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae26e3ac4106357457d997acd4a989307">&#9670;&nbsp;</a></span>LastSpanIsLinear() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::LastSpanIsLinear </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>min_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ada7ec27d4ee0cfb4cecfc77a8d65e889"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada7ec27d4ee0cfb4cecfc77a8d65e889">&#9670;&nbsp;</a></span>LastSpanIsLinear() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::LastSpanIsLinear </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>min_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/d6f/class_o_n___line.html">ON_Line</a> *&#160;</td>
<td class="paramname"><em>span_line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a667f621c7004f9f44f0d68f2267b9a0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a667f621c7004f9f44f0d68f2267b9a0b">&#9670;&nbsp;</a></span>NurbsCurve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a>* ON_Curve::NurbsCurve </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a> *&#160;</td>
<td class="paramname"><em>pNurbsCurve</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>tolerance</em> = <code>0.0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> *&#160;</td>
<td class="paramname"><em>subdomain</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get a NURBS curve representation of this curve. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pNurbsCurve</td><td>[in/out] if not nullptr, this <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a> will be used to store the NURBS representation of the curve will be returned.</td></tr>
<tr><td class="paramname">tolerance</td><td>[in] tolerance to use when creating NURBS representation.</td></tr>
<tr><td class="paramname">subdomain</td><td>[in] if not nullptr, then the NURBS representation for this portion of the curve is returned.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>nullptr or a NURBS representation of the curve. </dd></dl>
<p>See <a class="el" href="../../da/da0/class_o_n___surface.html#a4c4be57a220937dbf697548f3505a693" title="Get a NURBS surface representation of this surface. ">ON_Surface::GetNurbForm</a> for important details about the NURBS surface parameterization. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a67dd944c24cda3d319fa5ac73bb95c2e" title="Get a NURBS curve representation of this curve. ">ON_Curve::GetNurbForm</a></dd></dl>
</div>
</div>
<a id="a825d22c88fd23b1d684234fd3bf11254"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a825d22c88fd23b1d684234fd3bf11254">&#9670;&nbsp;</a></span>ObjectType()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ON::object_type ON_Curve::ObjectType </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>overrides virtual <a class="el" href="../../d9/d7b/class_o_n___object.html#afa19aee4a411a8fda53aff00bd02d86e" title="Useful for switch statements that need to differentiate between basic object types like points...">ON_Object::ObjectType</a>. </p>
<dl class="section return"><dt>Returns</dt><dd>ON::curve_object </dd></dl>
<p>Reimplemented from <a class="el" href="../../d9/d7b/class_o_n___object.html#afa19aee4a411a8fda53aff00bd02d86e">ON_Object</a>.</p>
</div>
</div>
<a id="a91620c97b56aba376a763086efb4f817"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91620c97b56aba376a763086efb4f817">&#9670;&nbsp;</a></span>operator=()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a>&amp; ON_Curve::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae57cffd07cc97af4e9636c5088babbdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae57cffd07cc97af4e9636c5088babbdb">&#9670;&nbsp;</a></span>ParameterSearch()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::ParameterSearch </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bEnableSnap</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; double &gt; &amp;&#160;</td>
<td class="paramname"><em>m_t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>RelTol</em> = <code>ON_SQRT_EPSILON</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Lookup a parameter in the m_t array, optionally using a built in snap tolerance to snap a parameter value to an element of m_t. This function is used by some types derived from <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> to snap parameter values </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] parameter</td></tr>
<tr><td class="paramname">index</td><td>[out] index into m_t such that if function returns false then</td></tr>
</table>
</dd>
</dl>
<p>value condition -1 t&lt;m_t[0] or m_t is empty 0&lt;=i&lt;=m_t.Count()-2 m_t[i] &lt; t &lt; m_t[i+1] m_t.Count()-1 t&gt;m_t[ m_t.Count()-1]</p>
<p>if the function returns true then t is equal to, or is closest to and within tolerance of m_t[index]. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bEnableSnap</td><td>[in] enable snapping</td></tr>
<tr><td class="paramname">m_t</td><td>[in] Array of parameter values to snap to</td></tr>
<tr><td class="paramname">RelTol</td><td>[in] tolerance used in snapping </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the t is exactly equal to (bEnableSnap==false), or within tolerance of (bEnableSnap==true) m_t[index]. </dd></dl>
</div>
</div>
<a id="abe5aefbc95ce86f017e69bf76cbbe03f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe5aefbc95ce86f017e69bf76cbbe03f">&#9670;&nbsp;</a></span>PointAt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> ON_Curve::PointAt </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate point at a parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Point (location of curve at the parameter t). </dd></dl>
<p>No error handling. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a82170503403c1f8c84286619f6179ead" title="Evaluate point at a parameter with error checking. ">ON_Curve::EvPoint</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#abd83649cbf4e749ac2613a058a6fe078" title="Evaluate point at the start of the curve. ">ON_Curve::PointAtStart</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a24c02f50c0c7e0036c744a0e3c8b8f88" title="Evaluate point at the end of the curve. ">ON_Curve::PointAtEnd</a></dd></dl>
</div>
</div>
<a id="a24c02f50c0c7e0036c744a0e3c8b8f88"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24c02f50c0c7e0036c744a0e3c8b8f88">&#9670;&nbsp;</a></span>PointAtEnd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> ON_Curve::PointAtEnd </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate point at the end of the curve. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Point (location of the end of the curve.) </dd></dl>
<p>No error handling. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#abe5aefbc95ce86f017e69bf76cbbe03f" title="Evaluate point at a parameter. ">ON_Curve::PointAt</a></dd></dl>
</div>
</div>
<a id="abd83649cbf4e749ac2613a058a6fe078"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd83649cbf4e749ac2613a058a6fe078">&#9670;&nbsp;</a></span>PointAtStart()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> ON_Curve::PointAtStart </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate point at the start of the curve. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Point (location of the start of the curve.) </dd></dl>
<p>No error handling. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#abe5aefbc95ce86f017e69bf76cbbe03f" title="Evaluate point at a parameter. ">ON_Curve::PointAt</a></dd></dl>
</div>
</div>
<a id="a506b1c3a2ad743b87d5a4085fe3d0b1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a506b1c3a2ad743b87d5a4085fe3d0b1a">&#9670;&nbsp;</a></span>Reverse()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::Reverse </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reverse the direction of the curve. </p>
<dl class="section return"><dt>Returns</dt><dd>true if curve was reversed. </dd></dl>
<p>If reveresed, the domain changes from [a,b] to [-b,-a] </p>
<p>Implemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a72d0663e72765f4e024ed763046cf2c5">ON_NurbsCurve</a>, <a class="el" href="../../d3/dac/class_o_n___brep_trim.html#a999e6d4eed18cdaf5ea47d2df1b31703">ON_BrepTrim</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a21f9237aff73da2af4d40546841d5a07">ON_PolylineCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a7b7ddcccd16139904903a18151a07eab">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a87298c404d6415c406fb75fcf99f60a5">ON_PolyCurve</a>, <a class="el" href="../../dd/de8/class_o_n___brep_edge.html#a2104640ecd04cff273220b6b67917b44">ON_BrepEdge</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#af3072a8fbbd3a7e34ae565f305c9d42d">ON_LineCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ac60899f802a2a8e5fbe7855d093278e1">ON_ArcCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#ad346b0728efa25fe5ad41e6bbb40b536">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="ac8dc771e7ebcfac85baf26c7e6b21c70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8dc771e7ebcfac85baf26c7e6b21c70">&#9670;&nbsp;</a></span>SetDomain() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::SetDomain </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a>&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the domain of the curve. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">domain</td><td>[in] increasing interval</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
</div>
</div>
<a id="af327855ca0a4d977e6ebfb5b84ad2281"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af327855ca0a4d977e6ebfb5b84ad2281">&#9670;&nbsp;</a></span>SetDomain() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::SetDomain </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t1</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the domain of the curve </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t0</td><td>[in]</td></tr>
<tr><td class="paramname">t1</td><td>[in] new domain will be [t0,t1]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#aeea590cb875216a888582c5615f9bac4">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a298ee48bc1a500e6302d9d3eb666af3c">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#af6b17638561f66bafeac70e39f1d5144">ON_PolyCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#aab50a239b515d317ae305e59b30b338b">ON_PolylineCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a9e13f390873b568044615cedd67982cb">ON_ArcCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a96c00debd03e34940f0d91e2ab8a770b">ON_LineCurve</a>.</p>
</div>
</div>
<a id="a96e8ee83e56e84c16a14637fe48a42ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96e8ee83e56e84c16a14637fe48a42ee">&#9670;&nbsp;</a></span>SetEndPoint()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::SetEndPoint </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a>&#160;</td>
<td class="paramname"><em>end_point</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Force the curve to end at a specified point. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">end_point</td><td>[in]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
<p>Some end points cannot be moved. Be sure to check return code. <a class="el" href="../../d4/d5a/class_o_n___curve.html#a96e8ee83e56e84c16a14637fe48a42ee" title="Force the curve to end at a specified point. ">ON_Curve::SetEndPoint()</a> returns true if end_point is the same as the end of the curve, false otherwise. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#ab6db85b7bd367cab86201db1a6b5a1b5" title="Force the curve to start at a specified point. ">ON_Curve::SetStartPoint</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#abd83649cbf4e749ac2613a058a6fe078" title="Evaluate point at the start of the curve. ">ON_Curve::PointAtStart</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a24c02f50c0c7e0036c744a0e3c8b8f88" title="Evaluate point at the end of the curve. ">ON_Curve::PointAtEnd</a></dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#ad12e2394611a4533e0eb1f4984df5ad9">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#aea0cc61b8723a76056a34ea6bffc404f">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a3c4d080328acb8457bc4a0e0edd9c618">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a1cbc88e53a55095621b0ad116c3e9da7">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#ad9ae4db21d684102054d2383d98ceeb4">ON_LineCurve</a>, and <a class="el" href="../../d6/d10/class_o_n___poly_edge_curve.html#a6368036da9444ff415aaa0997c489ce0">ON_PolyEdgeCurve</a>.</p>
</div>
</div>
<a id="ab6db85b7bd367cab86201db1a6b5a1b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6db85b7bd367cab86201db1a6b5a1b5">&#9670;&nbsp;</a></span>SetStartPoint()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::SetStartPoint </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a>&#160;</td>
<td class="paramname"><em>start_point</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Force the curve to start at a specified point. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">start_point</td><td>[in]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
<p>Some end points cannot be moved. Be sure to check return code. <a class="el" href="../../d4/d5a/class_o_n___curve.html#ab6db85b7bd367cab86201db1a6b5a1b5" title="Force the curve to start at a specified point. ">ON_Curve::SetStartPoint()</a> returns true if start_point is the same as the start of the curve, false otherwise. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a96e8ee83e56e84c16a14637fe48a42ee" title="Force the curve to end at a specified point. ">ON_Curve::SetEndPoint</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#abd83649cbf4e749ac2613a058a6fe078" title="Evaluate point at the start of the curve. ">ON_Curve::PointAtStart</a>, <a class="el" href="../../d4/d5a/class_o_n___curve.html#a24c02f50c0c7e0036c744a0e3c8b8f88" title="Evaluate point at the end of the curve. ">ON_Curve::PointAtEnd</a></dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#aa57fdf2af5b0ff3f531d008fba7b7c82">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a6c03092b607012d1d9b6829a2ce0468b">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a3e3a808731699edd3df177bf1a296b92">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a99eb9ec8e402101b7c0e745f622583f6">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a3577c2b05faec78e85c53929a76c6f01">ON_LineCurve</a>, and <a class="el" href="../../d6/d10/class_o_n___poly_edge_curve.html#a82312d2fd06bc5435f9670d336fc34ed">ON_PolyEdgeCurve</a>.</p>
</div>
</div>
<a id="af13b163bb51b3972593f6ccf89d18950"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af13b163bb51b3972593f6ccf89d18950">&#9670;&nbsp;</a></span>SizeOf()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_Curve::SizeOf </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual <a class="el" href="../../d9/d7b/class_o_n___object.html#a0299df21bfed90d7b5bfb24cdcf5e6c1">ON_Object::SizeOf</a> override </p>
<p>Reimplemented from <a class="el" href="../../d9/d7b/class_o_n___object.html#a0299df21bfed90d7b5bfb24cdcf5e6c1">ON_Object</a>.</p>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a519796fb199145d307fd14579ebc0db3">ON_NurbsCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a1afa5ee6dd28cd871df014c487e787fc">ON_PolyCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#afa7eaa521aa400bc4447ad136686c5d0">ON_CurveProxy</a>, <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#abf79215907936dbe20a8e5812385a68c">ON_CurveOnSurface</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a6ce7960090187e209917c86b06198eb3">ON_PolylineCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a8cd438d91bdfd442c1366722634bfe0b">ON_LineCurve</a>.</p>
</div>
</div>
<a id="ad162b90ba333e4f3dd5b13823e1b5f27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad162b90ba333e4f3dd5b13823e1b5f27">&#9670;&nbsp;</a></span>SpanCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int ON_Curve::SpanCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get number of nonempty smooth (c-infinity) spans in curve </p>
<dl class="section return"><dt>Returns</dt><dd>Number of nonempty smooth (c-infinity) spans. </dd></dl>
<p>Implemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#aa6ac461f346b5b39e40285648b2f7c9b">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a60e953c1caf4f99fe3c96a499e085025">ON_CurveProxy</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#ae0ca84ecc6a7068fdf12ba8c4d76c81b">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a976ec8e2a29b3e1336f199830d108ff5">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#abfbb21095d4b15e686ba1d820d2e9caf">ON_ArcCurve</a>, <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a34960d115a0d8a9f951a406d8a25ea0a">ON_LineCurve</a>, and <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a82bf6f36ef002f3460cb28220d59ae85">ON_CurveOnSurface</a>.</p>
</div>
</div>
<a id="a2d6c16e8ddfe8f2cde8c4431db67a337"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d6c16e8ddfe8f2cde8c4431db67a337">&#9670;&nbsp;</a></span>Split()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::Split </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> *&amp;&#160;</td>
<td class="paramname"><em>left_side</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d4/d5a/class_o_n___curve.html">ON_Curve</a> *&amp;&#160;</td>
<td class="paramname"><em>right_side</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Splits (divides) the curve at the specified parameter. The parameter must be in the interior of the curve's domain. The pointers passed to Split must either be nullptr or point to an <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> object of the same type. If the pointer is nullptr, then a curve will be created in <a class="el" href="../../d4/d5a/class_o_n___curve.html#a2d6c16e8ddfe8f2cde8c4431db67a337" title="Splits (divides) the curve at the specified parameter. The parameter must be in the interior of the c...">Split()</a>. You may pass "this" as left_side or right_side. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] parameter to split the curve at in the interval returned by <a class="el" href="../../d4/d5a/class_o_n___curve.html#ae3a1e3ea7c924246a43754aa03790432">Domain()</a>.</td></tr>
<tr><td class="paramname">left_side</td><td>[out] left portion of curve returned here</td></tr>
<tr><td class="paramname">right_side</td><td>[out] right portion of curve returned here</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><p class="startdd">true - The curve was split into two pieces. false - The curve could not be split. For example if the parameter is too close to an endpoint.</p>
<p class="enddd"></p>
</dd></dl>
<div class="fragment"><div class="line">For example, <span class="keywordflow">if</span> crv were an <a class="code" href="../../d3/d6a/class_o_n___nurbs_curve.html">ON_NurbsCurve</a>, then</div><div class="line">@verbatim</div><div class="line"> ON_NurbsCurve right_side;</div><div class="line"> crv.<a class="code" href="../../d9/d6f/class_o_n___bezier_curve.html#a57d6ce22e7838a408cadcdeb24c27093">Split</a>( crv.Domain().Mid() &amp;crv, &amp;right_side );</div><div class="line"><span class="keyword">@end</span>verbatim</div><div class="line"></div><div class="line">would split crv at the parametric midpoint, put the left side</div><div class="line">in crv, and <span class="keywordflow">return</span> the right side in right_side.</div></div><!-- fragment -->
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#ae7c3377f4c0b675df37cdb0f1af189d5">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#ad9a7a85fd744962124d0a95cad577fa4">ON_PolylineCurve</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#a1ddf4e9b0126ff9d2c8e96f11f7d3fbe">ON_PolyCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a30c3e7144814a2f9750df6725833788f">ON_CurveProxy</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#ab6502c18d86790d3b8f689eb25dfb7ca">ON_ArcCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#ae0f25152c053d6d369d528e9513d7a8c">ON_LineCurve</a>.</p>
</div>
</div>
<a id="a8de2247b5bb20d1b67d40c274c17697a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8de2247b5bb20d1b67d40c274c17697a">&#9670;&nbsp;</a></span>TangentAt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> ON_Curve::TangentAt </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate unit tangent vector at a parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>[in] evaluation parameter</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Unit tangent vector of the curve at the parameter t. </dd></dl>
<p>No error handling. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d4/d5a/class_o_n___curve.html#a4e223877e0a89d31e0ed404625db70ef" title="Evaluate unit tangent at a parameter with error checking. ">ON_Curve::EvTangent</a></dd></dl>
</div>
</div>
<a id="a9f59373850214fc53a6c793596aece78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f59373850214fc53a6c793596aece78">&#9670;&nbsp;</a></span>Transform()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool ON_Curve::Transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> &amp;&#160;</td>
<td class="paramname"><em>xform</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>overrides virtual <a class="el" href="../../df/de0/class_o_n___geometry.html#add710872e89bc29e1ed1321b3e70b1b1" title="Transforms the object. ">ON_Geometry::Transform()</a>. <a class="el" href="../../d4/d5a/class_o_n___curve.html#a9f59373850214fc53a6c793596aece78" title="overrides virtual ON_Geometry::Transform(). ON_Curve::Transform() calls ON_Geometry::Transform(xform)...">ON_Curve::Transform()</a> calls ON_Geometry::Transform(xform), which calls ON_Object::TransformUserData(xform), and then calls this-&gt;<a class="el" href="../../d4/d5a/class_o_n___curve.html#a5a1d3ccd2a60f2ed3f06c864ee263429" title="Destroys the runtime curve tree used to speed closest point and intersection calcuations. ">DestroyCurveTree()</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">xform</td><td>[in] transformation to apply to object.</td></tr>
</table>
</dd>
</dl>
<p>Classes derived from <a class="el" href="../../d4/d5a/class_o_n___curve.html" title="ON_Curve is a pure virtual class for curve objects ">ON_Curve</a> should call <a class="el" href="../../d4/d5a/class_o_n___curve.html#a9f59373850214fc53a6c793596aece78" title="overrides virtual ON_Geometry::Transform(). ON_Curve::Transform() calls ON_Geometry::Transform(xform)...">ON_Curve::Transform()</a> to handle user data transformations and curve tree destruction and then transform their definition. </p>
<p>Reimplemented from <a class="el" href="../../df/de0/class_o_n___geometry.html#add710872e89bc29e1ed1321b3e70b1b1">ON_Geometry</a>.</p>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#a91156f587df4aa7396565f76ccd80e9c">ON_NurbsCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a69902b2ea0bb50302e6db10bf567c024">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#ace50c5842aad8743bff5a2f479e10084">ON_PolyCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#ad54d8c21e1d940e3b185265c39b68640">ON_PolylineCurve</a>, <a class="el" href="../../d5/d1a/class_o_n___curve_on_surface.html#a61d3b5978e95548898f2c434295fcb8b">ON_CurveOnSurface</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#adde3ee82a21929311ce980f783d565c0">ON_LineCurve</a>.</p>
</div>
</div>
<a id="abd583766fdcd75cc269e87aeab40c4a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd583766fdcd75cc269e87aeab40c4a7">&#9670;&nbsp;</a></span>Trim()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ON_Curve::Trim </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../dc/dc7/class_o_n___interval.html">ON_Interval</a> &amp;&#160;</td>
<td class="paramname"><em>domain</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes portions of the curve outside the specified interval. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">domain</td><td>[in] interval of the curve to keep. Portions of the curve before curve(domain[0]) and after curve(domain[1]) are removed.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful. </dd></dl>
<p>Reimplemented in <a class="el" href="../../d3/d6a/class_o_n___nurbs_curve.html#ac5a5f0259b22d7bd7d88ecaf8e4bf56f">ON_NurbsCurve</a>, <a class="el" href="../../d8/d6f/class_o_n___polyline_curve.html#a3ed6944252962bfa50a535bed3ae00a2">ON_PolylineCurve</a>, <a class="el" href="../../dc/dda/class_o_n___curve_proxy.html#a706a5f0d8bc948f9bea6a4eafd5f2c36">ON_CurveProxy</a>, <a class="el" href="../../d8/d00/class_o_n___poly_curve.html#af71306a123188d97480215c799b7ca8d">ON_PolyCurve</a>, <a class="el" href="../../dc/d83/class_o_n___arc_curve.html#a8127d39ce7052ee633916242fec0b2c9">ON_ArcCurve</a>, and <a class="el" href="../../d0/ddd/class_o_n___line_curve.html#a920589c2dadec618f9cd99cb71c7320c">ON_LineCurve</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.13-->
<!-- start footer part -->
</div> <!-- page-content -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Feb 3 2018 11:08:30 for openNURBS SDK Help by <a href="http://www.doxygen.org/index.html">
<!-- <img class="footer" src="../../doxygen.png" alt="doxygen"/> -->
Doxygen
</a> 1.8.13
</small></address>
</div> <!-- container -->
<!-- doxy-boot -->
<script type="text/javascript" src="../../doxy-boot.js"></script>
</body>
</html>