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

1148 lines
64 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_MeshNgon 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="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../dc/d0f/class_o_n___mesh_ngon-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ON_MeshNgon Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../db/df7/opennurbs__mesh_8h_source.html">opennurbs_mesh.h</a>&gt;</code></p>
<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:a020cc6bf78aa865d951419d520471145"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a020cc6bf78aa865d951419d520471145">AppendToString</a> (class <a class="el" href="../../d2/d3b/class_o_n___string.html">ON_String</a> &amp;s) const</td></tr>
<tr class="separator:a020cc6bf78aa865d951419d520471145"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92e622133ec10b722a4ac10354a9d482"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a92e622133ec10b722a4ac10354a9d482">AppendToString</a> (class <a class="el" href="../../d1/d11/class_o_n__w_string.html">ON_wString</a> &amp;s) const</td></tr>
<tr class="separator:a92e622133ec10b722a4ac10354a9d482"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdf3d2073a73b46ec4132af024382e33"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#abdf3d2073a73b46ec4132af024382e33">BoundaryEdgeCount</a> (const <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;mesh_face_list) const</td></tr>
<tr class="separator:abdf3d2073a73b46ec4132af024382e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51c7647b673551545e2ea8ae55945047"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a51c7647b673551545e2ea8ae55945047">BoundaryEdgeCount</a> (const <a class="el" href="../../df/d11/class_o_n___mesh.html">ON_Mesh</a> *mesh) const</td></tr>
<tr class="separator:a51c7647b673551545e2ea8ae55945047"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a954edaf9e8fe2068ee8ccbdc0fdfa7ec"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a954edaf9e8fe2068ee8ccbdc0fdfa7ec">Capacity</a> () const</td></tr>
<tr class="separator:a954edaf9e8fe2068ee8ccbdc0fdfa7ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4de4a0164ccb72757c0ffb4bf97fc85d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/ddf/class_o_n___s_h_a1___hash.html">ON_SHA1_Hash</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a4de4a0164ccb72757c0ffb4bf97fc85d">ContentHash</a> () const</td></tr>
<tr class="separator:a4de4a0164ccb72757c0ffb4bf97fc85d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39b336cae277ae3f3bfb883419919cdd"><td class="memItemLeft" align="right" valign="top">ON__UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a39b336cae277ae3f3bfb883419919cdd">CRC32</a> () const</td></tr>
<tr class="separator:a39b336cae277ae3f3bfb883419919cdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e2369285b80f0cee315265c3684b377"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a5e2369285b80f0cee315265c3684b377">Dump</a> (class <a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> &amp;text_log) const</td></tr>
<tr class="separator:a5e2369285b80f0cee315265c3684b377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6eed871ea493de2c8ce5c15f4baa756e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a6eed871ea493de2c8ce5c15f4baa756e">GetBoundarySides</a> (const class <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;mesh_face_list, <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; unsigned int &gt; &amp;ngon_boundary_sides) const</td></tr>
<tr class="memdesc:a6eed871ea493de2c8ce5c15f4baa756e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use the ngon m_fi[] array to get a list of ngon boundary sides. <a href="#a6eed871ea493de2c8ce5c15f4baa756e">More...</a><br /></td></tr>
<tr class="separator:a6eed871ea493de2c8ce5c15f4baa756e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adaad9cc8d7ec59317d114cc70c6ddfaa"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#adaad9cc8d7ec59317d114cc70c6ddfaa">GetOuterBoundaryPoints</a> (const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;mesh_vertex_list, bool bAppendStartPoint, <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; &amp;ngon_boundary_points) const</td></tr>
<tr class="memdesc:adaad9cc8d7ec59317d114cc70c6ddfaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use the ngon m_vi[] array to get a list of 3d points from mesh_vertex_list. <a href="#adaad9cc8d7ec59317d114cc70c6ddfaa">More...</a><br /></td></tr>
<tr class="separator:adaad9cc8d7ec59317d114cc70c6ddfaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e9ba32e30d4c112dbc50ee17cd51d17"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a2e9ba32e30d4c112dbc50ee17cd51d17">GetOuterBoundaryPoints</a> (const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;mesh_vertex_list, bool bAppendStartPoint, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> *ngon_boundary_points) const</td></tr>
<tr class="memdesc:a2e9ba32e30d4c112dbc50ee17cd51d17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use the ngon m_vi[] array to get a list of 3d points from mesh_vertex_list. <a href="#a2e9ba32e30d4c112dbc50ee17cd51d17">More...</a><br /></td></tr>
<tr class="separator:a2e9ba32e30d4c112dbc50ee17cd51d17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad081408a2dc6df86095488eb46f7ca40"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#ad081408a2dc6df86095488eb46f7ca40">Orientation</a> (const <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;mesh_face_list, bool bPermitHoles) const</td></tr>
<tr class="memdesc:ad081408a2dc6df86095488eb46f7ca40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if the ngon's boundary orientation matches that of the set of faces it is made from. <a href="#ad081408a2dc6df86095488eb46f7ca40">More...</a><br /></td></tr>
<tr class="separator:ad081408a2dc6df86095488eb46f7ca40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab08fb8f3992e5d0befa84a1b7e192fd0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#ab08fb8f3992e5d0befa84a1b7e192fd0">Orientation</a> (const <a class="el" href="../../df/d11/class_o_n___mesh.html">ON_Mesh</a> *mesh, bool bPermitHoles) const</td></tr>
<tr class="memdesc:ab08fb8f3992e5d0befa84a1b7e192fd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if the ngon's boundary orientation matches that of the set of faces it is made from. <a href="#ab08fb8f3992e5d0befa84a1b7e192fd0">More...</a><br /></td></tr>
<tr class="separator:ab08fb8f3992e5d0befa84a1b7e192fd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6841bf12bab1e1846b0e5473269c3649"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a6841bf12bab1e1846b0e5473269c3649">OuterBoundaryEdgeCount</a> () const</td></tr>
<tr class="separator:a6841bf12bab1e1846b0e5473269c3649"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94957bdc9789dd8f577e48b28c40909b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a94957bdc9789dd8f577e48b28c40909b">ReverseOuterBoundary</a> ()</td></tr>
<tr class="memdesc:a94957bdc9789dd8f577e48b28c40909b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse the order of the m_vi[] array. <a href="#a94957bdc9789dd8f577e48b28c40909b">More...</a><br /></td></tr>
<tr class="separator:a94957bdc9789dd8f577e48b28c40909b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a844465d5254f81ae6005b4a30335f0b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d3b/class_o_n___string.html">ON_String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a844465d5254f81ae6005b4a30335f0b2">ToString</a> () const</td></tr>
<tr class="separator:a844465d5254f81ae6005b4a30335f0b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f77d02a7fc8b39ea6492782938b69ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d1/d11/class_o_n__w_string.html">ON_wString</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a5f77d02a7fc8b39ea6492782938b69ea">ToWideString</a> () const</td></tr>
<tr class="separator:a5f77d02a7fc8b39ea6492782938b69ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a9f28257f2bd43c955bc82314b827fcb7"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a9f28257f2bd43c955bc82314b827fcb7">Compare</a> (const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *A, const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *B)</td></tr>
<tr class="separator:a9f28257f2bd43c955bc82314b827fcb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4352b8bb0569558de08dfa74f8b1395"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#ac4352b8bb0569558de08dfa74f8b1395">FindNgonOuterBoundary</a> (const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;mesh_vertex_list, const class <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;mesh_face_list, const unsigned int *const *vertex_face_map, size_t ngon_fi_count, const unsigned int *ngon_fi, <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; unsigned int &gt; &amp;ngon_vi)</td></tr>
<tr class="memdesc:ac4352b8bb0569558de08dfa74f8b1395"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a list of vertices that form the boundary of a set of faces. <a href="#ac4352b8bb0569558de08dfa74f8b1395">More...</a><br /></td></tr>
<tr class="separator:ac4352b8bb0569558de08dfa74f8b1395"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62d6fc97ef9375f87118ea25d9da3e1e"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a62d6fc97ef9375f87118ea25d9da3e1e">FindPlanarNgons</a> (const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;vertex_list, const class <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;face_list, const unsigned int *const *vertex_face_map, double planar_tolerance, unsigned int minimum_ngon_vertex_count, unsigned int minimum_ngon_face_count, bool bAllowHoles, class <a class="el" href="../../d0/dec/class_o_n___mesh_ngon_allocator.html">ON_MeshNgonAllocator</a> &amp;NgonAllocator, <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; unsigned int &gt; &amp;NgonMap, <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *&gt; &amp;Ngons)</td></tr>
<tr class="separator:a62d6fc97ef9375f87118ea25d9da3e1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6198586119e95e3d1a1829c613080b12"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a6198586119e95e3d1a1829c613080b12">IsValid</a> (const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *ngon, unsigned int ngon_index, <a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> *text_log, unsigned int mesh_vertex_count, unsigned int mesh_face_count, const <a class="el" href="../../de/d91/class_o_n___mesh_face.html">ON_MeshFace</a> *mesh_F)</td></tr>
<tr class="memdesc:a6198586119e95e3d1a1829c613080b12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test ngon to see if the vertex and face references are valid and pass partial boundary validity checks, <a href="#a6198586119e95e3d1a1829c613080b12">More...</a><br /></td></tr>
<tr class="separator:a6198586119e95e3d1a1829c613080b12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e1f92bff7349a4fa964a12c2a0366be"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a2e1f92bff7349a4fa964a12c2a0366be">IsValid</a> (const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *ngon, unsigned int ngon_index, <a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> *text_log, unsigned int mesh_vertex_count, unsigned int mesh_face_count, const <a class="el" href="../../de/d91/class_o_n___mesh_face.html">ON_MeshFace</a> *mesh_F, <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; unsigned int &gt; &amp;workspace_buffer)</td></tr>
<tr class="separator:a2e1f92bff7349a4fa964a12c2a0366be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a394718017f61f497b598ef7b65cab5c9"><td class="memItemLeft" align="right" valign="top">static class <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a394718017f61f497b598ef7b65cab5c9">NgonFromMeshFace</a> (class <a class="el" href="../../df/d35/class_o_n___mesh_ngon_buffer.html">ON_MeshNgonBuffer</a> &amp;ngon_buffer, unsigned int mesh_face_index, const unsigned int *fvi)</td></tr>
<tr class="memdesc:a394718017f61f497b598ef7b65cab5c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an ngon pointer that contains a triangle (3-gon) or quad (4-gon) from a mesh face. This is handy when your code needs to handle both ngons and faces because it lets you convert a face to its ngon format and the rest of the code can work exclusively with ngons. <a href="#a394718017f61f497b598ef7b65cab5c9">More...</a><br /></td></tr>
<tr class="separator:a394718017f61f497b598ef7b65cab5c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31f82078d58ddc0f0da74f35a35ea946"><td class="memItemLeft" align="right" valign="top">static class <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a31f82078d58ddc0f0da74f35a35ea946">NgonListFromMeshFace</a> (class <a class="el" href="../../df/d35/class_o_n___mesh_ngon_buffer.html">ON_MeshNgonBuffer</a> &amp;ngon_buffer, unsigned int mesh_face_index, const unsigned int *fvi)</td></tr>
<tr class="memdesc:a31f82078d58ddc0f0da74f35a35ea946"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an array of a single ngon pointer that contains a triangle (3-gon) or quad (4-gon) from a mesh face. This is handy when your code needs to handle both ngons and faces because it lets you convert a face to its ngon format and the rest of the code can work exclusively with ngons. <a href="#a31f82078d58ddc0f0da74f35a35ea946">More...</a><br /></td></tr>
<tr class="separator:a31f82078d58ddc0f0da74f35a35ea946"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8228c54598e58fdad9968fcd11b49ed7"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a8228c54598e58fdad9968fcd11b49ed7">NgonListFromMeshFaceOrNgonComponent</a> (class <a class="el" href="../../df/d35/class_o_n___mesh_ngon_buffer.html">ON_MeshNgonBuffer</a> &amp;ngon_buffer, ON_COMPONENT_INDEX ci, const class <a class="el" href="../../df/d11/class_o_n___mesh.html">ON_Mesh</a> *mesh, const class <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *const *&amp;ngon_list)</td></tr>
<tr class="memdesc:a8228c54598e58fdad9968fcd11b49ed7"><td class="mdescLeft">&#160;</td><td class="mdescRight">If a component index identifies a face or ngon, Get an array Create an array of a single ngon pointer that contains a triangle (3-gon) or quad (4-gon) from a mesh face. This is handy when your code needs to handle both ngons and faces because it lets you convert a face to its ngon format and the rest of the code can work exclusively with ngons. <a href="#a8228c54598e58fdad9968fcd11b49ed7">More...</a><br /></td></tr>
<tr class="separator:a8228c54598e58fdad9968fcd11b49ed7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a120e153345a764577ceaf05e90a546cb"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a120e153345a764577ceaf05e90a546cb">m_Fcount</a></td></tr>
<tr class="separator:a120e153345a764577ceaf05e90a546cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafb93ba1bbc13cc9aa7be5011cdf4013"><td class="memItemLeft" align="right" valign="top">unsigned int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#aafb93ba1bbc13cc9aa7be5011cdf4013">m_fi</a></td></tr>
<tr class="separator:aafb93ba1bbc13cc9aa7be5011cdf4013"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a175d7cf5009f5c6e0450528aa1c9eee6"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a175d7cf5009f5c6e0450528aa1c9eee6">m_Vcount</a></td></tr>
<tr class="memdesc:a175d7cf5009f5c6e0450528aa1c9eee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of N-gon corners (N &gt;= 3) <a href="#a175d7cf5009f5c6e0450528aa1c9eee6">More...</a><br /></td></tr>
<tr class="separator:a175d7cf5009f5c6e0450528aa1c9eee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a889e4013c47fdbdfaad06ff5b13ad20c"><td class="memItemLeft" align="right" valign="top">unsigned int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html#a889e4013c47fdbdfaad06ff5b13ad20c">m_vi</a></td></tr>
<tr class="separator:a889e4013c47fdbdfaad06ff5b13ad20c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a020cc6bf78aa865d951419d520471145"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a020cc6bf78aa865d951419d520471145">&#9670;&nbsp;</a></span>AppendToString() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_MeshNgon::AppendToString </td>
<td>(</td>
<td class="paramtype">class <a class="el" href="../../d2/d3b/class_o_n___string.html">ON_String</a> &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a92e622133ec10b722a4ac10354a9d482"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92e622133ec10b722a4ac10354a9d482">&#9670;&nbsp;</a></span>AppendToString() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_MeshNgon::AppendToString </td>
<td>(</td>
<td class="paramtype">class <a class="el" href="../../d1/d11/class_o_n__w_string.html">ON_wString</a> &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abdf3d2073a73b46ec4132af024382e33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abdf3d2073a73b46ec4132af024382e33">&#9670;&nbsp;</a></span>BoundaryEdgeCount() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::BoundaryEdgeCount </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;&#160;</td>
<td class="paramname"><em>mesh_face_list</em></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">mesh_face_list</td><td>[in] faces referenced by this n-gon.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Total number of boundary edges, including interior edges. </dd></dl>
</div>
</div>
<a id="a51c7647b673551545e2ea8ae55945047"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51c7647b673551545e2ea8ae55945047">&#9670;&nbsp;</a></span>BoundaryEdgeCount() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::BoundaryEdgeCount </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../df/d11/class_o_n___mesh.html">ON_Mesh</a> *&#160;</td>
<td class="paramname"><em>mesh</em></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">mesh</td><td>[in] mesh referenced by this n-gon.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Total number of boundary edges, including interior edges. </dd></dl>
</div>
</div>
<a id="a954edaf9e8fe2068ee8ccbdc0fdfa7ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a954edaf9e8fe2068ee8ccbdc0fdfa7ec">&#9670;&nbsp;</a></span>Capacity()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::Capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>0: This n-gon is not managed by an <a class="el" href="../../d0/dec/class_o_n___mesh_ngon_allocator.html">ON_MeshNgonAllocator</a>. &gt;=0: The maximum capcity (maximum m_Vcount+m_Fcount) for this N-gon </dd></dl>
</div>
</div>
<a id="a9f28257f2bd43c955bc82314b827fcb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f28257f2bd43c955bc82314b827fcb7">&#9670;&nbsp;</a></span>Compare()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int ON_MeshNgon::Compare </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *&#160;</td>
<td class="paramname"><em>A</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *&#160;</td>
<td class="paramname"><em>B</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4de4a0164ccb72757c0ffb4bf97fc85d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4de4a0164ccb72757c0ffb4bf97fc85d">&#9670;&nbsp;</a></span>ContentHash()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../dd/ddf/class_o_n___s_h_a1___hash.html">ON_SHA1_Hash</a> ON_MeshNgon::ContentHash </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A SHA-1 has of the vertex and face indices. </dd></dl>
</div>
</div>
<a id="a39b336cae277ae3f3bfb883419919cdd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39b336cae277ae3f3bfb883419919cdd">&#9670;&nbsp;</a></span>CRC32()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON__UINT32 ON_MeshNgon::CRC32 </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>32-bit cyclic redundancy check that can be used as a hash code. </dd></dl>
</div>
</div>
<a id="a5e2369285b80f0cee315265c3684b377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e2369285b80f0cee315265c3684b377">&#9670;&nbsp;</a></span>Dump()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_MeshNgon::Dump </td>
<td>(</td>
<td class="paramtype">class <a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> &amp;&#160;</td>
<td class="paramname"><em>text_log</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac4352b8bb0569558de08dfa74f8b1395"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4352b8bb0569558de08dfa74f8b1395">&#9670;&nbsp;</a></span>FindNgonOuterBoundary()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static unsigned int ON_MeshNgon::FindNgonOuterBoundary </td>
<td>(</td>
<td class="paramtype">const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;&#160;</td>
<td class="paramname"><em>mesh_vertex_list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const class <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;&#160;</td>
<td class="paramname"><em>mesh_face_list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int *const *&#160;</td>
<td class="paramname"><em>vertex_face_map</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>ngon_fi_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int *&#160;</td>
<td class="paramname"><em>ngon_fi</em>, </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; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>ngon_vi</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get a list of vertices that form the boundary of a set of faces. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mesh_vertex_list</td><td>[in]</td></tr>
<tr><td class="paramname">mesh_face_list</td><td>[in]</td></tr>
<tr><td class="paramname">vertex_face_map</td><td>[in] null or a vertex map made from the information in mesh_vertex_list and mesh_face_list.</td></tr>
<tr><td class="paramname">ngon_fi_count</td><td>[in] length of ngon_fi[] array</td></tr>
<tr><td class="paramname">ngon_fi</td><td>[in] An array of length ngon_fi_count that contains the indices of the faces that form the ngon.</td></tr>
<tr><td class="paramname">ngon_vi</td><td>[out] An array of vertex indices that make the ngon boundary.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of vertices in the ngon outer boundary or 0 if the input is not valid. </dd></dl>
</div>
</div>
<a id="a62d6fc97ef9375f87118ea25d9da3e1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62d6fc97ef9375f87118ea25d9da3e1e">&#9670;&nbsp;</a></span>FindPlanarNgons()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static unsigned int ON_MeshNgon::FindPlanarNgons </td>
<td>(</td>
<td class="paramtype">const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;&#160;</td>
<td class="paramname"><em>vertex_list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const class <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;&#160;</td>
<td class="paramname"><em>face_list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int *const *&#160;</td>
<td class="paramname"><em>vertex_face_map</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>planar_tolerance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>minimum_ngon_vertex_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>minimum_ngon_face_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bAllowHoles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">class <a class="el" href="../../d0/dec/class_o_n___mesh_ngon_allocator.html">ON_MeshNgonAllocator</a> &amp;&#160;</td>
<td class="paramname"><em>NgonAllocator</em>, </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; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>NgonMap</em>, </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; <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>Ngons</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6eed871ea493de2c8ce5c15f4baa756e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6eed871ea493de2c8ce5c15f4baa756e">&#9670;&nbsp;</a></span>GetBoundarySides()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::GetBoundarySides </td>
<td>(</td>
<td class="paramtype">const class <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;&#160;</td>
<td class="paramname"><em>mesh_face_list</em>, </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; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>ngon_boundary_sides</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Use the ngon m_fi[] array to get a list of ngon boundary sides. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mesh_face_list</td><td>[in]</td></tr>
<tr><td class="paramname">ngon_boundary_sides</td><td>[out] ngon_boundary_sides[i]/8 = ON_MeshNon.m_fi[] array index ngon_boundary_sides[i]%4 = side index side index 0 identifies the side that runs from the first face vertex to the second face vertex. ngon_boundary_sides[i]&amp;4 != 0 means the face side is reversed when used as an ngon boundary segment.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of elements added to ngon_boundary_sides[] or 0 if invalid input is encountered. </dd></dl>
</div>
</div>
<a id="adaad9cc8d7ec59317d114cc70c6ddfaa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adaad9cc8d7ec59317d114cc70c6ddfaa">&#9670;&nbsp;</a></span>GetOuterBoundaryPoints() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::GetOuterBoundaryPoints </td>
<td>(</td>
<td class="paramtype">const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;&#160;</td>
<td class="paramname"><em>mesh_vertex_list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bAppendStartPoint</em>, </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; <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>ngon_boundary_points</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Use the ngon m_vi[] array to get a list of 3d points from mesh_vertex_list. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mesh_vertex_list</td><td>[in]</td></tr>
<tr><td class="paramname">bAppendStartPoint</td><td>[in] If true, the initial point in the boundary will be added as the first point of ngon_boundary_points[] and then added again as the last point of ngon_boundary_points[]. This is useful when you need a closed polyline.</td></tr>
<tr><td class="paramname">ngon_boundary_points</td><td>[out] An array of ngon-&gt;m_Vcount + (bAppendStartPoint ? 1 : 0) points.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of points added to ngon_boundary_points[] or 0 if invalid input is encountered. </dd></dl>
</div>
</div>
<a id="a2e9ba32e30d4c112dbc50ee17cd51d17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e9ba32e30d4c112dbc50ee17cd51d17">&#9670;&nbsp;</a></span>GetOuterBoundaryPoints() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::GetOuterBoundaryPoints </td>
<td>(</td>
<td class="paramtype">const class <a class="el" href="../../d0/d8a/class_o_n__3d_point_list_ref.html">ON_3dPointListRef</a> &amp;&#160;</td>
<td class="paramname"><em>mesh_vertex_list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bAppendStartPoint</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> *&#160;</td>
<td class="paramname"><em>ngon_boundary_points</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Use the ngon m_vi[] array to get a list of 3d points from mesh_vertex_list. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mesh_vertex_list</td><td>[in]</td></tr>
<tr><td class="paramname">bAppendStartPoint</td><td>[in] If true, the initial point in the boundary will be added as the first point of ngon_boundary_points[] and then added again as the last point of ngon_boundary_points[]. This is useful when you need a closed polyline.</td></tr>
<tr><td class="paramname">ngon_boundary_points</td><td>[out] An array of ngon-&gt;m_Vcount + (bAppendStartPoint ? 1 : 0) points is returned in ngon_boundary_points[]. The caller must insure that ngon_boundary_points[] has room for this many elements.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of points added to ngon_boundary_points[] or 0 if invalid input is encountered. </dd></dl>
</div>
</div>
<a id="a6198586119e95e3d1a1829c613080b12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6198586119e95e3d1a1829c613080b12">&#9670;&nbsp;</a></span>IsValid() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static unsigned int ON_MeshNgon::IsValid </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *&#160;</td>
<td class="paramname"><em>ngon</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>ngon_index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> *&#160;</td>
<td class="paramname"><em>text_log</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mesh_vertex_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mesh_face_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../de/d91/class_o_n___mesh_face.html">ON_MeshFace</a> *&#160;</td>
<td class="paramname"><em>mesh_F</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test ngon to see if the vertex and face references are valid and pass partial boundary validity checks, </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ngon</td><td>[in] ngon to test</td></tr>
<tr><td class="paramname">ngon_index</td><td>[in] This index is used in messages sent to text_log</td></tr>
<tr><td class="paramname">text_log</td><td>[in] nullptr or a place to send information about problems.</td></tr>
<tr><td class="paramname">mesh_vertex_count</td><td>[in] Number of vertices in the mesh</td></tr>
<tr><td class="paramname">mesh_face_count</td><td>[in] Number of face in the mesh</td></tr>
<tr><td class="paramname">mesh_F</td><td>[in] nullptr of mesh faces - required for boundary checks</td></tr>
<tr><td class="paramname">workspace_buffer</td><td>[in] If you are passing in mesh_F and you are testing testing multple ngons, then consider providing a workspace_buffer that will be automatically reused for successive ngons.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0: ngon is not valid &gt;0: number of boundary edges. If this number is &gt; ngon-&gt;m_V_count, then the ngon has inner boundaries or duplicate vertices. </dd></dl>
</div>
</div>
<a id="a2e1f92bff7349a4fa964a12c2a0366be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e1f92bff7349a4fa964a12c2a0366be">&#9670;&nbsp;</a></span>IsValid() <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">static unsigned int ON_MeshNgon::IsValid </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *&#160;</td>
<td class="paramname"><em>ngon</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>ngon_index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d2/da3/class_o_n___text_log.html">ON_TextLog</a> *&#160;</td>
<td class="paramname"><em>text_log</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mesh_vertex_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mesh_face_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../de/d91/class_o_n___mesh_face.html">ON_MeshFace</a> *&#160;</td>
<td class="paramname"><em>mesh_F</em>, </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; unsigned int &gt; &amp;&#160;</td>
<td class="paramname"><em>workspace_buffer</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a394718017f61f497b598ef7b65cab5c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a394718017f61f497b598ef7b65cab5c9">&#9670;&nbsp;</a></span>NgonFromMeshFace()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static class <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a>* ON_MeshNgon::NgonFromMeshFace </td>
<td>(</td>
<td class="paramtype">class <a class="el" href="../../df/d35/class_o_n___mesh_ngon_buffer.html">ON_MeshNgonBuffer</a> &amp;&#160;</td>
<td class="paramname"><em>ngon_buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mesh_face_index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int *&#160;</td>
<td class="paramname"><em>fvi</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an ngon pointer that contains a triangle (3-gon) or quad (4-gon) from a mesh face. This is handy when your code needs to handle both ngons and faces because it lets you convert a face to its ngon format and the rest of the code can work exclusively with ngons. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buffer</td><td>[in] an array with a capacity for at least 9 ON__UINT_PTR elements. The returned ngon information will be stored in this memory.</td></tr>
<tr><td class="paramname">mesh_face_index</td><td>[in]</td></tr>
<tr><td class="paramname">fvi</td><td>[in] mesh face vertex indices. If "f" is an <a class="el" href="../../de/d91/class_o_n___mesh_face.html">ON_MeshFace</a>, then pass (const unsigned int*)f.vi.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If the input is valid, the returned ngon pointer is is the face's triangle or quad. All returned information is in the buffer[]. null - invalid input. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../df/d11/class_o_n___mesh.html#aa7dc938246cff27850bd279cb8b9e307">ON_Mesh::NgonFromComponentIndex()</a></dd></dl>
</div>
</div>
<a id="a31f82078d58ddc0f0da74f35a35ea946"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31f82078d58ddc0f0da74f35a35ea946">&#9670;&nbsp;</a></span>NgonListFromMeshFace()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static class <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a>** ON_MeshNgon::NgonListFromMeshFace </td>
<td>(</td>
<td class="paramtype">class <a class="el" href="../../df/d35/class_o_n___mesh_ngon_buffer.html">ON_MeshNgonBuffer</a> &amp;&#160;</td>
<td class="paramname"><em>ngon_buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>mesh_face_index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned int *&#160;</td>
<td class="paramname"><em>fvi</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an array of a single ngon pointer that contains a triangle (3-gon) or quad (4-gon) from a mesh face. This is handy when your code needs to handle both ngons and faces because it lets you convert a face to its ngon format and the rest of the code can work exclusively with ngons. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ngon_buffer</td><td>[in] memory used to create ngon classan array with a capacity for at least 10 ON__UINT_PTR elements.</td></tr>
<tr><td class="paramname">mesh_face_index</td><td>[in]</td></tr>
<tr><td class="paramname">fvi</td><td>[in] mesh face vertex indices. If "f" is an <a class="el" href="../../de/d91/class_o_n___mesh_face.html">ON_MeshFace</a>, then pass (const unsigned int*)f.vi.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If the input is valid, the returned pointer is an array of a single ngon that is the face's triangle or quad. All returned information is in the buffer[]. null - invalid input. </dd></dl>
</div>
</div>
<a id="a8228c54598e58fdad9968fcd11b49ed7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8228c54598e58fdad9968fcd11b49ed7">&#9670;&nbsp;</a></span>NgonListFromMeshFaceOrNgonComponent()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static unsigned int ON_MeshNgon::NgonListFromMeshFaceOrNgonComponent </td>
<td>(</td>
<td class="paramtype">class <a class="el" href="../../df/d35/class_o_n___mesh_ngon_buffer.html">ON_MeshNgonBuffer</a> &amp;&#160;</td>
<td class="paramname"><em>ngon_buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ON_COMPONENT_INDEX&#160;</td>
<td class="paramname"><em>ci</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const class <a class="el" href="../../df/d11/class_o_n___mesh.html">ON_Mesh</a> *&#160;</td>
<td class="paramname"><em>mesh</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const class <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> *const *&amp;&#160;</td>
<td class="paramname"><em>ngon_list</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If a component index identifies a face or ngon, Get an array Create an array of a single ngon pointer that contains a triangle (3-gon) or quad (4-gon) from a mesh face. This is handy when your code needs to handle both ngons and faces because it lets you convert a face to its ngon format and the rest of the code can work exclusively with ngons. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ngon_buffer</td><td>[in] memory used to create <a class="el" href="../../d5/df5/class_o_n___mesh_ngon.html">ON_MeshNgon</a> class</td></tr>
<tr><td class="paramname">ci</td><td>[in]</td></tr>
<tr><td class="paramname">mesh</td><td>[in]</td></tr>
<tr><td class="paramname">ngon_list</td><td>[out] An array of ngon pointers. Some pointers may be null.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of ngon pointers in ngon_list. </dd></dl>
</div>
</div>
<a id="ad081408a2dc6df86095488eb46f7ca40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad081408a2dc6df86095488eb46f7ca40">&#9670;&nbsp;</a></span>Orientation() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_MeshNgon::Orientation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d6/d82/class_o_n___mesh_face_list.html">ON_MeshFaceList</a> &amp;&#160;</td>
<td class="paramname"><em>mesh_face_list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bPermitHoles</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Determine if the ngon's boundary orientation matches that of the set of faces it is made from. </p>
<dl class="section return"><dt>Returns</dt><dd>1: The ngon does not have holes, the ngon's faces are compatibly oriented, and the ngon's outer boundary orientation matches the faces' orientation. -1: The ngon does not have holes, the ngon's faces are compatibly oriented, and the ngon's outer boundary orientation is opposite the faces' orientation. 0: Otherwise. The ngon may be invalid, have holes, the ngon's faces may not be compatibly oriented, the ngons edges may not have a consistent orientation with respect to the faces, or some other issue. </dd></dl>
</div>
</div>
<a id="ab08fb8f3992e5d0befa84a1b7e192fd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab08fb8f3992e5d0befa84a1b7e192fd0">&#9670;&nbsp;</a></span>Orientation() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_MeshNgon::Orientation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../df/d11/class_o_n___mesh.html">ON_Mesh</a> *&#160;</td>
<td class="paramname"><em>mesh</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bPermitHoles</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Determine if the ngon's boundary orientation matches that of the set of faces it is made from. </p>
<dl class="section return"><dt>Returns</dt><dd>1: The ngon does not have holes, the ngon's faces are compatibly oriented, and the ngon's outer boundary orientation matches the faces' orientation. -1: The ngon does not have holes, the ngon's faces are compatibly oriented, and the ngon's outer boundary orientation is opposite the faces' orientation. 0: Otherwise. The ngon may be invalid, have holes, the ngon's faces may not be compatibly oriented, the ngons edges may not have a consistent orientation with respect to the faces, or some other issue. </dd></dl>
</div>
</div>
<a id="a6841bf12bab1e1846b0e5473269c3649"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6841bf12bab1e1846b0e5473269c3649">&#9670;&nbsp;</a></span>OuterBoundaryEdgeCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::OuterBoundaryEdgeCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Total number of outer boundary edges. </dd></dl>
</div>
</div>
<a id="a94957bdc9789dd8f577e48b28c40909b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94957bdc9789dd8f577e48b28c40909b">&#9670;&nbsp;</a></span>ReverseOuterBoundary()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_MeshNgon::ReverseOuterBoundary </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reverse the order of the m_vi[] array. </p>
</div>
</div>
<a id="a844465d5254f81ae6005b4a30335f0b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a844465d5254f81ae6005b4a30335f0b2">&#9670;&nbsp;</a></span>ToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d2/d3b/class_o_n___string.html">ON_String</a> ON_MeshNgon::ToString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5f77d02a7fc8b39ea6492782938b69ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f77d02a7fc8b39ea6492782938b69ea">&#9670;&nbsp;</a></span>ToWideString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d1/d11/class_o_n__w_string.html">ON_wString</a> ON_MeshNgon::ToWideString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a120e153345a764577ceaf05e90a546cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a120e153345a764577ceaf05e90a546cb">&#9670;&nbsp;</a></span>m_Fcount</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::m_Fcount</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aafb93ba1bbc13cc9aa7be5011cdf4013"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafb93ba1bbc13cc9aa7be5011cdf4013">&#9670;&nbsp;</a></span>m_fi</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int* ON_MeshNgon::m_fi</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a175d7cf5009f5c6e0450528aa1c9eee6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a175d7cf5009f5c6e0450528aa1c9eee6">&#9670;&nbsp;</a></span>m_Vcount</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_MeshNgon::m_Vcount</td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of N-gon corners (N &gt;= 3) </p>
</div>
</div>
<a id="a889e4013c47fdbdfaad06ff5b13ad20c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a889e4013c47fdbdfaad06ff5b13ad20c">&#9670;&nbsp;</a></span>m_vi</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int* ON_MeshNgon::m_vi</td>
</tr>
</table>
</div><div class="memdoc">
</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:31 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>