Files
opennurbs/6/d7/d20/class_o_n___matrix.html
Bozo 013efd06c9 Publish!
Generated from v6.0.11315.11111-test11
2018-01-31 14:30:40 -08:00

1646 lines
80 KiB
HTML

<!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_Matrix 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="../../dynsections.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">openNURBS SDK Help
&#160;<span id="projectnumber">6.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</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="../../da/d2a/class_o_n___matrix-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ON_Matrix Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../de/d67/opennurbs__matrix_8h_source.html">opennurbs_matrix.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:a128bc88612c7d0a8c6c5ce2a6c6cfbd5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a128bc88612c7d0a8c6c5ce2a6c6cfbd5">ON_Matrix</a> ()</td></tr>
<tr class="separator:a128bc88612c7d0a8c6c5ce2a6c6cfbd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57f417223ee32567f3a61ca43addd40c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a57f417223ee32567f3a61ca43addd40c">ON_Matrix</a> (int row_count, int col_count)</td></tr>
<tr class="separator:a57f417223ee32567f3a61ca43addd40c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61d370028626882680f61720ea388563"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a61d370028626882680f61720ea388563">ON_Matrix</a> (int, int, int, int)</td></tr>
<tr class="separator:a61d370028626882680f61720ea388563"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b55dd900fcd644b5522bd618b02d27b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a9b55dd900fcd644b5522bd618b02d27b">ON_Matrix</a> (const <a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> &amp;)</td></tr>
<tr class="separator:a9b55dd900fcd644b5522bd618b02d27b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b0b0a5bf94839cbedd5dc9bf01d5427"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a7b0b0a5bf94839cbedd5dc9bf01d5427">ON_Matrix</a> (const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;)</td></tr>
<tr class="separator:a7b0b0a5bf94839cbedd5dc9bf01d5427"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c666468504806e790a817247d271766"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a5c666468504806e790a817247d271766">ON_Matrix</a> (int row_count, int col_count, double **M, bool bDestructorFreeM)</td></tr>
<tr class="separator:a5c666468504806e790a817247d271766"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a0f75b14b2927679d475856d494d950"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a5a0f75b14b2927679d475856d494d950">~ON_Matrix</a> ()</td></tr>
<tr class="separator:a5a0f75b14b2927679d475856d494d950"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1d3c54c376ee8df65db638f6ea464c4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#aa1d3c54c376ee8df65db638f6ea464c4">Add</a> (const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;A, const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;B)</td></tr>
<tr class="separator:aa1d3c54c376ee8df65db638f6ea464c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55e3baa7d2b4667bf08867d53bbe55e1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a55e3baa7d2b4667bf08867d53bbe55e1">BackSolve</a> (double, int, const double *, double *) const</td></tr>
<tr class="separator:a55e3baa7d2b4667bf08867d53bbe55e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b0d7b410ca2ea57d00b7aac9d7f1596"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a7b0d7b410ca2ea57d00b7aac9d7f1596">BackSolve</a> (double, int, const <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> *, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> *) const</td></tr>
<tr class="separator:a7b0d7b410ca2ea57d00b7aac9d7f1596"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20e7f824ed7351549101c75355acd058"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a20e7f824ed7351549101c75355acd058">BackSolve</a> (double, int, int, int, const double *, int, double *) const</td></tr>
<tr class="separator:a20e7f824ed7351549101c75355acd058"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7efd54299aa8bcd94d2220fe3bafb0c0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a7efd54299aa8bcd94d2220fe3bafb0c0">ColCount</a> () const</td></tr>
<tr class="separator:a7efd54299aa8bcd94d2220fe3bafb0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38ac562afa09b37f944c87f0305f95dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a38ac562afa09b37f944c87f0305f95dd">ColOp</a> (int, double, int)</td></tr>
<tr class="separator:a38ac562afa09b37f944c87f0305f95dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdb12cbeba5f0bdbc5ece30c70b71b3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#afdb12cbeba5f0bdbc5ece30c70b71b3e">ColScale</a> (int, double)</td></tr>
<tr class="separator:afdb12cbeba5f0bdbc5ece30c70b71b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2445017dc3a76e4c77ed8d27d5c4ab8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#af2445017dc3a76e4c77ed8d27d5c4ab8">Create</a> (int, int)</td></tr>
<tr class="separator:af2445017dc3a76e4c77ed8d27d5c4ab8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70cc2091358308051f52b9df617790f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a70cc2091358308051f52b9df617790f0">Create</a> (int, int, int, int)</td></tr>
<tr class="separator:a70cc2091358308051f52b9df617790f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10e43ee3add720f939ea4ba3d8c55d8d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a10e43ee3add720f939ea4ba3d8c55d8d">Create</a> (int row_count, int col_count, double **M, bool bDestructorFreeM)</td></tr>
<tr class="separator:a10e43ee3add720f939ea4ba3d8c55d8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab905309e163746445db79cf170cdbb7d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ab905309e163746445db79cf170cdbb7d">Destroy</a> ()</td></tr>
<tr class="separator:ab905309e163746445db79cf170cdbb7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ba7807885a5369450ff271899e94b43"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a2ba7807885a5369450ff271899e94b43">EmergencyDestroy</a> ()</td></tr>
<tr class="memdesc:a2ba7807885a5369450ff271899e94b43"><td class="mdescLeft">&#160;</td><td class="mdescRight">call if memory pool used matrix by becomes invalid <a href="#a2ba7807885a5369450ff271899e94b43">More...</a><br /></td></tr>
<tr class="separator:a2ba7807885a5369450ff271899e94b43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5708bd5913b6b55790132e675a9ea1a6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a5708bd5913b6b55790132e675a9ea1a6">Invert</a> (double)</td></tr>
<tr class="separator:a5708bd5913b6b55790132e675a9ea1a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08a9609ac54ba1b2e09e6e629d19794c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a08a9609ac54ba1b2e09e6e629d19794c">IsColOrthoganal</a> () const</td></tr>
<tr class="separator:a08a9609ac54ba1b2e09e6e629d19794c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af53fc1acfaba1bb212624bc53f7e31ed"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#af53fc1acfaba1bb212624bc53f7e31ed">IsColOrthoNormal</a> () const</td></tr>
<tr class="separator:af53fc1acfaba1bb212624bc53f7e31ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2efa1c0186b3365bd6dc4bebf5b6a2a4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a2efa1c0186b3365bd6dc4bebf5b6a2a4">IsRowOrthoganal</a> () const</td></tr>
<tr class="separator:a2efa1c0186b3365bd6dc4bebf5b6a2a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62d2062d73f6164cea45a14e2e56babc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a62d2062d73f6164cea45a14e2e56babc">IsRowOrthoNormal</a> () const</td></tr>
<tr class="separator:a62d2062d73f6164cea45a14e2e56babc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46b9ec01e2c8a824a1bedbd3e08d91c0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a46b9ec01e2c8a824a1bedbd3e08d91c0">IsSquare</a> () const</td></tr>
<tr class="memdesc:a46b9ec01e2c8a824a1bedbd3e08d91c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns 0 for no and m_row_count (= m_col_count) for yes <a href="#a46b9ec01e2c8a824a1bedbd3e08d91c0">More...</a><br /></td></tr>
<tr class="separator:a46b9ec01e2c8a824a1bedbd3e08d91c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc5b82867bfc03d25505ba34643b2dc0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#abc5b82867bfc03d25505ba34643b2dc0">IsValid</a> () const</td></tr>
<tr class="separator:abc5b82867bfc03d25505ba34643b2dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e72cc2950350310e1df283aab5e2ee1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a4e72cc2950350310e1df283aab5e2ee1">MaxCount</a> () const</td></tr>
<tr class="memdesc:a4e72cc2950350310e1df283aab5e2ee1"><td class="mdescLeft">&#160;</td><td class="mdescRight">largest of row and column count <a href="#a4e72cc2950350310e1df283aab5e2ee1">More...</a><br /></td></tr>
<tr class="separator:a4e72cc2950350310e1df283aab5e2ee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a400907eceb70c82a167aaef00f8fef"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a7a400907eceb70c82a167aaef00f8fef">MinCount</a> () const</td></tr>
<tr class="memdesc:a7a400907eceb70c82a167aaef00f8fef"><td class="mdescLeft">&#160;</td><td class="mdescRight">smallest of row and column count <a href="#a7a400907eceb70c82a167aaef00f8fef">More...</a><br /></td></tr>
<tr class="separator:a7a400907eceb70c82a167aaef00f8fef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8527842943c0f6d49218b1f45f0541d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ad8527842943c0f6d49218b1f45f0541d">Multiply</a> (const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;A, const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;B)</td></tr>
<tr class="separator:ad8527842943c0f6d49218b1f45f0541d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a555d64aec2ac025dbdcbc236c63d8cff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a555d64aec2ac025dbdcbc236c63d8cff">operator=</a> (const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;)</td></tr>
<tr class="separator:a555d64aec2ac025dbdcbc236c63d8cff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8b86ab9480182ce4b823a1461894a24"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ab8b86ab9480182ce4b823a1461894a24">operator=</a> (const <a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> &amp;)</td></tr>
<tr class="separator:ab8b86ab9480182ce4b823a1461894a24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9093db310aad2c416e573e293644fa5e"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a9093db310aad2c416e573e293644fa5e">operator[]</a> (int)</td></tr>
<tr class="separator:a9093db310aad2c416e573e293644fa5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a6bc339699dcfb3c27748410454d8f9"><td class="memItemLeft" align="right" valign="top">const double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a4a6bc339699dcfb3c27748410454d8f9">operator[]</a> (int) const</td></tr>
<tr class="separator:a4a6bc339699dcfb3c27748410454d8f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ce758d83505f28e1c1aefe89e93b15b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a0ce758d83505f28e1c1aefe89e93b15b">RowCount</a> () const</td></tr>
<tr class="separator:a0ce758d83505f28e1c1aefe89e93b15b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a191a9919a8cb9442797eca7f34834ecb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a191a9919a8cb9442797eca7f34834ecb">RowOp</a> (int, double, int)</td></tr>
<tr class="separator:a191a9919a8cb9442797eca7f34834ecb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5985fb39254a0393a6269f954f774542"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a5985fb39254a0393a6269f954f774542">RowReduce</a> (double, double &amp;, double &amp;)</td></tr>
<tr class="separator:a5985fb39254a0393a6269f954f774542"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bdf7a9269a13cdfbf51ddad87599efd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a4bdf7a9269a13cdfbf51ddad87599efd">RowReduce</a> (double, double *, double *=nullptr)</td></tr>
<tr class="separator:a4bdf7a9269a13cdfbf51ddad87599efd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac100d36c2b52557ab74c7f6974e0d28c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ac100d36c2b52557ab74c7f6974e0d28c">RowReduce</a> (double, <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> *, double *=nullptr)</td></tr>
<tr class="separator:ac100d36c2b52557ab74c7f6974e0d28c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a012ba97bcf8a31b0adf4980404e50f2b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a012ba97bcf8a31b0adf4980404e50f2b">RowReduce</a> (double, int, int, double *, double *=nullptr)</td></tr>
<tr class="separator:a012ba97bcf8a31b0adf4980404e50f2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81dfa90eaf33d08fcb7a1628e63d7aaf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a81dfa90eaf33d08fcb7a1628e63d7aaf">RowScale</a> (int, double)</td></tr>
<tr class="separator:a81dfa90eaf33d08fcb7a1628e63d7aaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8ded2b4a205d83b8fe9371c4bc00e17"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#af8ded2b4a205d83b8fe9371c4bc00e17">Scale</a> (double s)</td></tr>
<tr class="separator:af8ded2b4a205d83b8fe9371c4bc00e17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa93c6808014a93dcec907b8bf6c60093"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#aa93c6808014a93dcec907b8bf6c60093">SetDiagonal</a> (double)</td></tr>
<tr class="memdesc:aa93c6808014a93dcec907b8bf6c60093"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets diagonal value and zeros off diagonal values <a href="#aa93c6808014a93dcec907b8bf6c60093">More...</a><br /></td></tr>
<tr class="separator:aa93c6808014a93dcec907b8bf6c60093"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97cc876e3e579ab331cae9e5b1f5b367"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a97cc876e3e579ab331cae9e5b1f5b367">SetDiagonal</a> (const double *)</td></tr>
<tr class="memdesc:a97cc876e3e579ab331cae9e5b1f5b367"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets diagonal values and zeros off diagonal values <a href="#a97cc876e3e579ab331cae9e5b1f5b367">More...</a><br /></td></tr>
<tr class="separator:a97cc876e3e579ab331cae9e5b1f5b367"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6433b82a205903a793de314a811a80f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ab6433b82a205903a793de314a811a80f">SetDiagonal</a> (int, const double *)</td></tr>
<tr class="memdesc:ab6433b82a205903a793de314a811a80f"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets size to count x count and diagonal values and zeros off diagonal values <a href="#ab6433b82a205903a793de314a811a80f">More...</a><br /></td></tr>
<tr class="separator:ab6433b82a205903a793de314a811a80f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae63acde9f45118675fa02ba3361e65ac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ae63acde9f45118675fa02ba3361e65ac">SetDiagonal</a> (const <a class="el" href="../../dc/dfe/class_o_n___simple_array.html">ON_SimpleArray</a>&lt; double &gt; &amp;)</td></tr>
<tr class="memdesc:ae63acde9f45118675fa02ba3361e65ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets size to length X lengthdiagonal values and zeros off diagonal values <a href="#ae63acde9f45118675fa02ba3361e65ac">More...</a><br /></td></tr>
<tr class="separator:ae63acde9f45118675fa02ba3361e65ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c82eb69f2dfd52a2d9c2f1f8f8fb3f3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a8c82eb69f2dfd52a2d9c2f1f8f8fb3f3">SwapCols</a> (int, int)</td></tr>
<tr class="memdesc:a8c82eb69f2dfd52a2d9c2f1f8f8fb3f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">ints are col indices to swap <a href="#a8c82eb69f2dfd52a2d9c2f1f8f8fb3f3">More...</a><br /></td></tr>
<tr class="separator:a8c82eb69f2dfd52a2d9c2f1f8f8fb3f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6bd7503c583d7dffada5ececadd70db"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#af6bd7503c583d7dffada5ececadd70db">SwapRows</a> (int, int)</td></tr>
<tr class="memdesc:af6bd7503c583d7dffada5ececadd70db"><td class="mdescLeft">&#160;</td><td class="mdescRight">ints are row indices to swap <a href="#af6bd7503c583d7dffada5ececadd70db">More...</a><br /></td></tr>
<tr class="separator:af6bd7503c583d7dffada5ececadd70db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace4e41327cfcc5aa794d35a8bf214913"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ace4e41327cfcc5aa794d35a8bf214913">Transpose</a> ()</td></tr>
<tr class="separator:ace4e41327cfcc5aa794d35a8bf214913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840239d2fc3eab0707151f048b722c9f"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a840239d2fc3eab0707151f048b722c9f">UnsignedColCount</a> () const</td></tr>
<tr class="separator:a840239d2fc3eab0707151f048b722c9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70af4300b11e7e578bee4090fe404773"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a70af4300b11e7e578bee4090fe404773">UnsignedMaxCount</a> () const</td></tr>
<tr class="memdesc:a70af4300b11e7e578bee4090fe404773"><td class="mdescLeft">&#160;</td><td class="mdescRight">largest of row and column count <a href="#a70af4300b11e7e578bee4090fe404773">More...</a><br /></td></tr>
<tr class="separator:a70af4300b11e7e578bee4090fe404773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1a3a2c1e566ac9e4ff0b247f97faddb"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#af1a3a2c1e566ac9e4ff0b247f97faddb">UnsignedMinCount</a> () const</td></tr>
<tr class="memdesc:af1a3a2c1e566ac9e4ff0b247f97faddb"><td class="mdescLeft">&#160;</td><td class="mdescRight">smallest of row and column count <a href="#af1a3a2c1e566ac9e4ff0b247f97faddb">More...</a><br /></td></tr>
<tr class="separator:af1a3a2c1e566ac9e4ff0b247f97faddb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f86352e077d57d4c306521498822a82"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a7f86352e077d57d4c306521498822a82">UnsignedRowCount</a> () const</td></tr>
<tr class="separator:a7f86352e077d57d4c306521498822a82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af95778050434317eee81529150531257"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#af95778050434317eee81529150531257">Zero</a> ()</td></tr>
<tr class="separator:af95778050434317eee81529150531257"><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:ab925f78bfcac8e9a8217230221a87dbb"><td class="memItemLeft" align="right" valign="top">static double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#ab925f78bfcac8e9a8217230221a87dbb">Allocate</a> (unsigned int row_count, unsigned int col_count)</td></tr>
<tr class="separator:ab925f78bfcac8e9a8217230221a87dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a705803864541b5927265adcba386562e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a705803864541b5927265adcba386562e">Deallocate</a> (double **M)</td></tr>
<tr class="separator:a705803864541b5927265adcba386562e"><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:a83af73f8033024e23fdae01d2b9d340b"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d20/class_o_n___matrix.html#a83af73f8033024e23fdae01d2b9d340b">m</a> = nullptr</td></tr>
<tr class="separator:a83af73f8033024e23fdae01d2b9d340b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a128bc88612c7d0a8c6c5ce2a6c6cfbd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a128bc88612c7d0a8c6c5ce2a6c6cfbd5">&#9670;&nbsp;</a></span>ON_Matrix() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Matrix::ON_Matrix </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a57f417223ee32567f3a61ca43addd40c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57f417223ee32567f3a61ca43addd40c">&#9670;&nbsp;</a></span>ON_Matrix() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Matrix::ON_Matrix </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>row_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>col_count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a61d370028626882680f61720ea388563"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61d370028626882680f61720ea388563">&#9670;&nbsp;</a></span>ON_Matrix() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Matrix::ON_Matrix </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9b55dd900fcd644b5522bd618b02d27b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b55dd900fcd644b5522bd618b02d27b">&#9670;&nbsp;</a></span>ON_Matrix() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Matrix::ON_Matrix </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"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7b0b0a5bf94839cbedd5dc9bf01d5427"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b0b0a5bf94839cbedd5dc9bf01d5427">&#9670;&nbsp;</a></span>ON_Matrix() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Matrix::ON_Matrix </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5c666468504806e790a817247d271766"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c666468504806e790a817247d271766">&#9670;&nbsp;</a></span>ON_Matrix() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Matrix::ON_Matrix </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>row_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>col_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double **&#160;</td>
<td class="paramname"><em>M</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bDestructorFreeM</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: This constructor is for experts who have storage for a matrix and need to use it in <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> form. Parameters: row_count - [in] col_count - [in] M - [in] bDestructorFreeM - [in] If true, ~ON_Matrix will call onfree(M). If false, caller is managing M's memory. Remarks: <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> functions that increase the value of row_count or col_count will fail on a matrix created with this constructor. </p>
</div>
</div>
<a id="a5a0f75b14b2927679d475856d494d950"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a0f75b14b2927679d475856d494d950">&#9670;&nbsp;</a></span>~ON_Matrix()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ON_Matrix::~ON_Matrix </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>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa1d3c54c376ee8df65db638f6ea464c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1d3c54c376ee8df65db638f6ea464c4">&#9670;&nbsp;</a></span>Add()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Add </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#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="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#160;</td>
<td class="paramname"><em>B</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Set this = A+B. Parameters: A - [in] (Can be this) B - [in] (Can be this) Returns: True when A and B are mXn matrices; in which case "this" will be an mXn matrix = A+B. False when A and B have different sizes. </p>
</div>
</div>
<a id="ab925f78bfcac8e9a8217230221a87dbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab925f78bfcac8e9a8217230221a87dbb">&#9670;&nbsp;</a></span>Allocate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double** ON_Matrix::Allocate </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>row_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>col_count</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>Returns: A row_count X col_count martix on the heap that can be deleted by calling <a class="el" href="../../d7/d20/class_o_n___matrix.html#a705803864541b5927265adcba386562e">ON_Matrix::Deallocate()</a>. </p>
</div>
</div>
<a id="a55e3baa7d2b4667bf08867d53bbe55e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55e3baa7d2b4667bf08867d53bbe55e1">&#9670;&nbsp;</a></span>BackSolve() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::BackSolve </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double *&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Solve M*X=B where M is upper triangular with a unit diagonal and B is a column of values. Parameters: zero_tolerance - <a href="../../&gt;=0.0">in</a> used to test for "zero" values in B in under determined systems of equations. Bsize - [in] (&gt;=m_row_count) length of B. The values in B[m_row_count],...,B[Bsize-1] are tested to make sure they are "zero". B - [in] array of length Bsize. X - [out] array of length m_col_count. Solutions returned here. Remarks: Actual values M[i][j] with i &lt;= j are ignored. M[i][i] is assumed to be one and M[i][j] i&lt;j is assumed to be zero. For square M, B and X can point to the same memory. See Also: <a class="el" href="../../d7/d20/class_o_n___matrix.html#a5985fb39254a0393a6269f954f774542">ON_Matrix::RowReduce</a> </p>
</div>
</div>
<a id="a7b0d7b410ca2ea57d00b7aac9d7f1596"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b0d7b410ca2ea57d00b7aac9d7f1596">&#9670;&nbsp;</a></span>BackSolve() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::BackSolve </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d2/d35/class_o_n__3d_point.html">ON_3dPoint</a> *&#160;</td>
<td class="paramname">, </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">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Solve M*X=B where M is upper triangular with a unit diagonal and B is a column of 3d points. Parameters: zero_tolerance - <a href="../../&gt;=0.0">in</a> used to test for "zero" values in B in under determined systems of equations. Bsize - [in] (&gt;=m_row_count) length of B. The values in B[m_row_count],...,B[Bsize-1] are tested to make sure they are "zero". B - [in] array of length Bsize. X - [out] array of length m_col_count. Solutions returned here. Remarks: Actual values M[i][j] with i &lt;= j are ignored. M[i][i] is assumed to be one and M[i][j] i&lt;j is assumed to be zero. For square M, B and X can point to the same memory. See Also: <a class="el" href="../../d7/d20/class_o_n___matrix.html#a5985fb39254a0393a6269f954f774542">ON_Matrix::RowReduce</a> </p>
</div>
</div>
<a id="a20e7f824ed7351549101c75355acd058"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20e7f824ed7351549101c75355acd058">&#9670;&nbsp;</a></span>BackSolve() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::BackSolve </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double *&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Solve M*X=B where M is upper triangular with a unit diagonal and B is a column of points Parameters: zero_tolerance - <a href="../../&gt;=0.0">in</a> used to test for "zero" values in B in under determined systems of equations. pt_dim - [in] dimension of points Bsize - [in] (&gt;=m_row_count) number of points in B[]. The points correspoinding to indices m_row_count, ..., (Bsize-1) are tested to make sure they are "zero". Bpt_stride - [in] stride between B points (&gt;=pt_dim) Bpt - [in/out] array of m_row_count*Bpt_stride values. The i-th B point is (Bpt[i*Bpt_stride],...,Bpt[i*Bpt_stride+pt_dim-1]). Xpt_stride - [in] stride between X points (&gt;=pt_dim) Xpt - [out] array of m_col_count*Xpt_stride values. The i-th X point is (Xpt[i*Xpt_stride],...,Xpt[i*Xpt_stride+pt_dim-1]). Remarks: Actual values M[i][j] with i &lt;= j are ignored. M[i][i] is assumed to be one and M[i][j] i&lt;j is assumed to be zero. For square M, B and X can point to the same memory. See Also: <a class="el" href="../../d7/d20/class_o_n___matrix.html#a5985fb39254a0393a6269f954f774542">ON_Matrix::RowReduce</a> </p>
</div>
</div>
<a id="a7efd54299aa8bcd94d2220fe3bafb0c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7efd54299aa8bcd94d2220fe3bafb0c0">&#9670;&nbsp;</a></span>ColCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::ColCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a38ac562afa09b37f944c87f0305f95dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38ac562afa09b37f944c87f0305f95dd">&#9670;&nbsp;</a></span>ColOp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::ColOp </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afdb12cbeba5f0bdbc5ece30c70b71b3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdb12cbeba5f0bdbc5ece30c70b71b3e">&#9670;&nbsp;</a></span>ColScale()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::ColScale </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af2445017dc3a76e4c77ed8d27d5c4ab8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2445017dc3a76e4c77ed8d27d5c4ab8">&#9670;&nbsp;</a></span>Create() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Create </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a70cc2091358308051f52b9df617790f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70cc2091358308051f52b9df617790f0">&#9670;&nbsp;</a></span>Create() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Create </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a10e43ee3add720f939ea4ba3d8c55d8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10e43ee3add720f939ea4ba3d8c55d8d">&#9670;&nbsp;</a></span>Create() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Create </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>row_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>col_count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double **&#160;</td>
<td class="paramname"><em>M</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>bDestructorFreeM</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: This constructor is for experts who have storage for a matrix and need to use it in <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> form. Parameters: row_count - [in] col_count - [in] M - [in] bDestructorFreeM - [in] If true, ~ON_Matrix will call onfree(M). If false, caller is managing M's memory. Remarks: <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> functions that increase the value of row_count or col_count will fail on a matrix created with this constructor. </p>
</div>
</div>
<a id="a705803864541b5927265adcba386562e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a705803864541b5927265adcba386562e">&#9670;&nbsp;</a></span>Deallocate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void ON_Matrix::Deallocate </td>
<td>(</td>
<td class="paramtype">double **&#160;</td>
<td class="paramname"><em>M</em></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="ab905309e163746445db79cf170cdbb7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab905309e163746445db79cf170cdbb7d">&#9670;&nbsp;</a></span>Destroy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::Destroy </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2ba7807885a5369450ff271899e94b43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ba7807885a5369450ff271899e94b43">&#9670;&nbsp;</a></span>EmergencyDestroy()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::EmergencyDestroy </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>call if memory pool used matrix by becomes invalid </p>
</div>
</div>
<a id="a5708bd5913b6b55790132e675a9ea1a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5708bd5913b6b55790132e675a9ea1a6">&#9670;&nbsp;</a></span>Invert()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Invert </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a08a9609ac54ba1b2e09e6e629d19794c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08a9609ac54ba1b2e09e6e629d19794c">&#9670;&nbsp;</a></span>IsColOrthoganal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::IsColOrthoganal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af53fc1acfaba1bb212624bc53f7e31ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af53fc1acfaba1bb212624bc53f7e31ed">&#9670;&nbsp;</a></span>IsColOrthoNormal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::IsColOrthoNormal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2efa1c0186b3365bd6dc4bebf5b6a2a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2efa1c0186b3365bd6dc4bebf5b6a2a4">&#9670;&nbsp;</a></span>IsRowOrthoganal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::IsRowOrthoganal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a62d2062d73f6164cea45a14e2e56babc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62d2062d73f6164cea45a14e2e56babc">&#9670;&nbsp;</a></span>IsRowOrthoNormal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::IsRowOrthoNormal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a46b9ec01e2c8a824a1bedbd3e08d91c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46b9ec01e2c8a824a1bedbd3e08d91c0">&#9670;&nbsp;</a></span>IsSquare()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::IsSquare </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>returns 0 for no and m_row_count (= m_col_count) for yes </p>
</div>
</div>
<a id="abc5b82867bfc03d25505ba34643b2dc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc5b82867bfc03d25505ba34643b2dc0">&#9670;&nbsp;</a></span>IsValid()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::IsValid </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4e72cc2950350310e1df283aab5e2ee1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e72cc2950350310e1df283aab5e2ee1">&#9670;&nbsp;</a></span>MaxCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::MaxCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>largest of row and column count </p>
</div>
</div>
<a id="a7a400907eceb70c82a167aaef00f8fef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a400907eceb70c82a167aaef00f8fef">&#9670;&nbsp;</a></span>MinCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::MinCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>smallest of row and column count </p>
</div>
</div>
<a id="ad8527842943c0f6d49218b1f45f0541d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8527842943c0f6d49218b1f45f0541d">&#9670;&nbsp;</a></span>Multiply()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Multiply </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#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="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#160;</td>
<td class="paramname"><em>B</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Set this = A*B. Parameters: A - [in] (Can be this) B - [in] (Can be this) Returns: True when A is an mXk matrix and B is a k X n matrix; in which case "this" will be an mXn matrix = A*B. False when A.ColCount() != B.RowCount(). </p>
</div>
</div>
<a id="a555d64aec2ac025dbdcbc236c63d8cff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a555d64aec2ac025dbdcbc236c63d8cff">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a>&amp; ON_Matrix::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab8b86ab9480182ce4b823a1461894a24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8b86ab9480182ce4b823a1461894a24">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a>&amp; ON_Matrix::operator= </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"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9093db310aad2c416e573e293644fa5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9093db310aad2c416e573e293644fa5e">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double* ON_Matrix::operator[] </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a>[i][j] = value at row i and column j 0 &lt;= i &lt; <a class="el" href="../../d7/d20/class_o_n___matrix.html#a0ce758d83505f28e1c1aefe89e93b15b">RowCount()</a> 0 &lt;= j &lt; <a class="el" href="../../d7/d20/class_o_n___matrix.html#a7efd54299aa8bcd94d2220fe3bafb0c0">ColCount()</a> </p>
</div>
</div>
<a id="a4a6bc339699dcfb3c27748410454d8f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a6bc339699dcfb3c27748410454d8f9">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const double* ON_Matrix::operator[] </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0ce758d83505f28e1c1aefe89e93b15b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ce758d83505f28e1c1aefe89e93b15b">&#9670;&nbsp;</a></span>RowCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::RowCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a191a9919a8cb9442797eca7f34834ecb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a191a9919a8cb9442797eca7f34834ecb">&#9670;&nbsp;</a></span>RowOp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::RowOp </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5985fb39254a0393a6269f954f774542"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5985fb39254a0393a6269f954f774542">&#9670;&nbsp;</a></span>RowReduce() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::RowReduce </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double &amp;&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double &amp;&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Row reduce a matrix to calculate rank and determinant. Parameters: zero_tolerance - <a href="../../&gt;=0.0">in</a> zero tolerance for pivot test If the absolute value of a pivot is &lt;= zero_tolerance, then the pivot is assumed to be zero. determinant - [out] value of determinant is returned here. pivot - [out] value of the smallest pivot is returned here Returns: Rank of the matrix. Remarks: The matrix itself is row reduced so that the result is an upper triangular matrix with 1's on the diagonal. </p>
</div>
</div>
<a id="a4bdf7a9269a13cdfbf51ddad87599efd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bdf7a9269a13cdfbf51ddad87599efd">&#9670;&nbsp;</a></span>RowReduce() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::RowReduce </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Row reduce a matrix as the first step in solving M*X=B where B is a column of values. Parameters: zero_tolerance - <a href="../../&gt;=0.0">in</a> zero tolerance for pivot test If the absolute value of a pivot is &lt;= zero_tolerance, then the pivot is assumed to be zero. B - [in/out] an array of m_row_count values that is row reduced with the matrix. determinant - [out] value of determinant is returned here. pivot - [out] If not nullptr, then the value of the smallest pivot is returned here Returns: Rank of the matrix. Remarks: The matrix itself is row reduced so that the result is an upper triangular matrix with 1's on the diagonal. Example: Solve M*X=B; double B[m] = ...; double B[n] = ...; <a class="el" href="../../d7/d20/class_o_n___matrix.html">ON_Matrix</a> M(m,n) = ...; M.RowReduce(ON_ZERO_TOLERANCE,B); ///&lt; modifies M and B M.BackSolve(m,B,X); ///&lt; solution is in X See Also: <a class="el" href="../../d7/d20/class_o_n___matrix.html#a55e3baa7d2b4667bf08867d53bbe55e1">ON_Matrix::BackSolve</a> </p>
</div>
</div>
<a id="ac100d36c2b52557ab74c7f6974e0d28c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac100d36c2b52557ab74c7f6974e0d28c">&#9670;&nbsp;</a></span>RowReduce() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::RowReduce </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </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">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Row reduce a matrix as the first step in solving M*X=B where B is a column of 3d points Parameters: zero_tolerance - <a href="../../&gt;=0.0">in</a> zero tolerance for pivot test If the absolute value of a pivot is &lt;= zero_tolerance, then the pivot is assumed to be zero. B - [in/out] an array of m_row_count 3d points that is row reduced with the matrix. determinant - [out] value of determinant is returned here. pivot - [out] If not nullptr, then the value of the smallest pivot is returned here Returns: Rank of the matrix. Remarks: The matrix itself is row reduced so that the result is an upper triangular matrix with 1's on the diagonal. See Also: <a class="el" href="../../d7/d20/class_o_n___matrix.html#a55e3baa7d2b4667bf08867d53bbe55e1">ON_Matrix::BackSolve</a> </p>
</div>
</div>
<a id="a012ba97bcf8a31b0adf4980404e50f2b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a012ba97bcf8a31b0adf4980404e50f2b">&#9670;&nbsp;</a></span>RowReduce() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ON_Matrix::RowReduce </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double *&#160;</td>
<td class="paramname"> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Row reduce a matrix as the first step in solving M*X=B where B is a column arbitrary dimension points. Parameters: zero_tolerance - <a href="../../&gt;=0.0">in</a> zero tolerance for pivot test If a the absolute value of a pivot is &lt;= zero_tolerance, then the pivoit is assumed to be zero. pt_dim - [in] dimension of points pt_stride - [in] stride between points (&gt;=pt_dim) pt - [in/out] array of m_row_count*pt_stride values. The i-th point is (pt[i*pt_stride],...,pt[i*pt_stride+pt_dim-1]). This array of points is row reduced along with the matrix. pivot - [out] If not nullptr, then the value of the smallest pivot is returned here Returns: Rank of the matrix. Remarks: The matrix itself is row reduced so that the result is an upper triangular matrix with 1's on the diagonal. See Also: <a class="el" href="../../d7/d20/class_o_n___matrix.html#a55e3baa7d2b4667bf08867d53bbe55e1">ON_Matrix::BackSolve</a> </p>
</div>
</div>
<a id="a81dfa90eaf33d08fcb7a1628e63d7aaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81dfa90eaf33d08fcb7a1628e63d7aaf">&#9670;&nbsp;</a></span>RowScale()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::RowScale </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af8ded2b4a205d83b8fe9371c4bc00e17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8ded2b4a205d83b8fe9371c4bc00e17">&#9670;&nbsp;</a></span>Scale()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Scale </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Description: Set this = s*this. Parameters: s - [in] Returns: True when A and s are valid. </p>
</div>
</div>
<a id="aa93c6808014a93dcec907b8bf6c60093"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa93c6808014a93dcec907b8bf6c60093">&#9670;&nbsp;</a></span>SetDiagonal() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::SetDiagonal </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>sets diagonal value and zeros off diagonal values </p>
</div>
</div>
<a id="a97cc876e3e579ab331cae9e5b1f5b367"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97cc876e3e579ab331cae9e5b1f5b367">&#9670;&nbsp;</a></span>SetDiagonal() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::SetDiagonal </td>
<td>(</td>
<td class="paramtype">const double *&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>sets diagonal values and zeros off diagonal values </p>
</div>
</div>
<a id="ab6433b82a205903a793de314a811a80f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6433b82a205903a793de314a811a80f">&#9670;&nbsp;</a></span>SetDiagonal() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::SetDiagonal </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double *&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>sets size to count x count and diagonal values and zeros off diagonal values </p>
</div>
</div>
<a id="ae63acde9f45118675fa02ba3361e65ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae63acde9f45118675fa02ba3361e65ac">&#9670;&nbsp;</a></span>SetDiagonal() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::SetDiagonal </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"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>sets size to length X lengthdiagonal values and zeros off diagonal values </p>
</div>
</div>
<a id="a8c82eb69f2dfd52a2d9c2f1f8f8fb3f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c82eb69f2dfd52a2d9c2f1f8f8fb3f3">&#9670;&nbsp;</a></span>SwapCols()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::SwapCols </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>ints are col indices to swap </p>
</div>
</div>
<a id="af6bd7503c583d7dffada5ececadd70db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6bd7503c583d7dffada5ececadd70db">&#9670;&nbsp;</a></span>SwapRows()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::SwapRows </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>ints are row indices to swap </p>
</div>
</div>
<a id="ace4e41327cfcc5aa794d35a8bf214913"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace4e41327cfcc5aa794d35a8bf214913">&#9670;&nbsp;</a></span>Transpose()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Matrix::Transpose </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a840239d2fc3eab0707151f048b722c9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a840239d2fc3eab0707151f048b722c9f">&#9670;&nbsp;</a></span>UnsignedColCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_Matrix::UnsignedColCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a70af4300b11e7e578bee4090fe404773"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70af4300b11e7e578bee4090fe404773">&#9670;&nbsp;</a></span>UnsignedMaxCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_Matrix::UnsignedMaxCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>largest of row and column count </p>
</div>
</div>
<a id="af1a3a2c1e566ac9e4ff0b247f97faddb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1a3a2c1e566ac9e4ff0b247f97faddb">&#9670;&nbsp;</a></span>UnsignedMinCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_Matrix::UnsignedMinCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>smallest of row and column count </p>
</div>
</div>
<a id="a7f86352e077d57d4c306521498822a82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f86352e077d57d4c306521498822a82">&#9670;&nbsp;</a></span>UnsignedRowCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int ON_Matrix::UnsignedRowCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af95778050434317eee81529150531257"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af95778050434317eee81529150531257">&#9670;&nbsp;</a></span>Zero()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Matrix::Zero </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a83af73f8033024e23fdae01d2b9d340b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83af73f8033024e23fdae01d2b9d340b">&#9670;&nbsp;</a></span>m</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double** ON_Matrix::m = nullptr</td>
</tr>
</table>
</div><div class="memdoc">
<p>m[i][j] = value at row i and column j </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 31 2018 14:30:14 for openNURBS SDK Help by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>