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

1430 lines
74 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_Quaternion 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="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="../../db/d53/class_o_n___quaternion-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ON_Quaternion Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../da/d53/opennurbs__quaternion_8h_source.html">opennurbs_quaternion.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:a6049aaea1fef16350e0a4bb31a594e17"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a6049aaea1fef16350e0a4bb31a594e17">ON_Quaternion</a> ()</td></tr>
<tr class="separator:a6049aaea1fef16350e0a4bb31a594e17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18107027364c01893a122d08e36b4996"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a18107027364c01893a122d08e36b4996">ON_Quaternion</a> (double qa, double qb, double qc, double qd)</td></tr>
<tr class="separator:a18107027364c01893a122d08e36b4996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac31b4c41441825e5826b79376edbfa9f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ac31b4c41441825e5826b79376edbfa9f">ON_Quaternion</a> (const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;v)</td></tr>
<tr class="memdesc:ac31b4c41441825e5826b79376edbfa9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">(a,b,c,d) = (0,v.x,v.y,v.z) <a href="#ac31b4c41441825e5826b79376edbfa9f">More...</a><br /></td></tr>
<tr class="separator:ac31b4c41441825e5826b79376edbfa9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c57a2950765a6ccaf75a9616506b213"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a7c57a2950765a6ccaf75a9616506b213">Conjugate</a> () const</td></tr>
<tr class="memdesc:a7c57a2950765a6ccaf75a9616506b213"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the conjugate of the quaternion = (a,-b,-c,-d). <a href="#a7c57a2950765a6ccaf75a9616506b213">More...</a><br /></td></tr>
<tr class="separator:a7c57a2950765a6ccaf75a9616506b213"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa04e085f17f83b02e75989306470dcd8"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#aa04e085f17f83b02e75989306470dcd8">DistanceTo</a> (const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;q) const</td></tr>
<tr class="separator:aa04e085f17f83b02e75989306470dcd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afaa88efe61d7f72b59fd6d2cdc61361d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#afaa88efe61d7f72b59fd6d2cdc61361d">GetRotation</a> (double &amp;angle, <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;axis) const</td></tr>
<tr class="separator:afaa88efe61d7f72b59fd6d2cdc61361d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afea34ea8a527a736523bb70520889991"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#afea34ea8a527a736523bb70520889991">GetRotation</a> (<a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> &amp;xform) const</td></tr>
<tr class="memdesc:afea34ea8a527a736523bb70520889991"><td class="mdescLeft">&#160;</td><td class="mdescRight">The transformation returned by this function has the property that xform*V = q.Rotate(V). <a href="#afea34ea8a527a736523bb70520889991">More...</a><br /></td></tr>
<tr class="separator:afea34ea8a527a736523bb70520889991"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac26334d57e502cb81b4e4de7a88d36c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#aac26334d57e502cb81b4e4de7a88d36c">GetRotation</a> (<a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;plane) const</td></tr>
<tr class="separator:aac26334d57e502cb81b4e4de7a88d36c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc13ce7ad41adafb53424d9fcc006ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a1bc13ce7ad41adafb53424d9fcc006ec">Inverse</a> () const</td></tr>
<tr class="separator:a1bc13ce7ad41adafb53424d9fcc006ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab57b9e8619d188c2517a6b7f6e705619"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ab57b9e8619d188c2517a6b7f6e705619">Invert</a> ()</td></tr>
<tr class="memdesc:ab57b9e8619d188c2517a6b7f6e705619"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the quaternion to a/L2, -b/L2, -c/L2, -d/L2, where L2 = length squared = (a*a + b*b + c*c + d*d). This is the multiplicative inverse, i.e., (a,b,c,d)*(a/L2, -b/L2, -c/L2, -d/L2) = (1,0,0,0). <a href="#ab57b9e8619d188c2517a6b7f6e705619">More...</a><br /></td></tr>
<tr class="separator:ab57b9e8619d188c2517a6b7f6e705619"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01f25c00ead2e578de541dc5be06131b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a01f25c00ead2e578de541dc5be06131b">IsNotZero</a> () const</td></tr>
<tr class="separator:a01f25c00ead2e578de541dc5be06131b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5993b62fcf53705ecfaeb521774b5a01"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a5993b62fcf53705ecfaeb521774b5a01">IsScalar</a> () const</td></tr>
<tr class="separator:a5993b62fcf53705ecfaeb521774b5a01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd60d68d08fc0e708f41338d92059df2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#acd60d68d08fc0e708f41338d92059df2">IsValid</a> () const</td></tr>
<tr class="separator:acd60d68d08fc0e708f41338d92059df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e65d466cf9a3cb1d7ba5be20c1a4af0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a8e65d466cf9a3cb1d7ba5be20c1a4af0">IsVector</a> () const</td></tr>
<tr class="separator:a8e65d466cf9a3cb1d7ba5be20c1a4af0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9f5b7df609a1d1903c3521517ec56a9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ab9f5b7df609a1d1903c3521517ec56a9">IsZero</a> () const</td></tr>
<tr class="separator:ab9f5b7df609a1d1903c3521517ec56a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae618b56f8488cc484bea9d7ce4d03dac"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ae618b56f8488cc484bea9d7ce4d03dac">Length</a> () const</td></tr>
<tr class="separator:ae618b56f8488cc484bea9d7ce4d03dac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7374cffe3374e0cde4e047a07f8131da"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a7374cffe3374e0cde4e047a07f8131da">LengthSquared</a> () const</td></tr>
<tr class="separator:a7374cffe3374e0cde4e047a07f8131da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc30079f12ae54e9979ca5369c51fe91"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#adc30079f12ae54e9979ca5369c51fe91">MatrixForm</a> () const</td></tr>
<tr class="separator:adc30079f12ae54e9979ca5369c51fe91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d164ed82cd2bee7713f9f0004c4c4c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a6d164ed82cd2bee7713f9f0004c4c4c2">operator*</a> (int) const</td></tr>
<tr class="memdesc:a6d164ed82cd2bee7713f9f0004c4c4c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">arithmetic operators <a href="#a6d164ed82cd2bee7713f9f0004c4c4c2">More...</a><br /></td></tr>
<tr class="separator:a6d164ed82cd2bee7713f9f0004c4c4c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cf1e56c7b174370a13be12d435b21c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a5cf1e56c7b174370a13be12d435b21c0">operator*</a> (float) const</td></tr>
<tr class="separator:a5cf1e56c7b174370a13be12d435b21c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad06737eeb2f0d1b745e2308a5b52e5b2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ad06737eeb2f0d1b745e2308a5b52e5b2">operator*</a> (double) const</td></tr>
<tr class="separator:ad06737eeb2f0d1b745e2308a5b52e5b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa9e1e7d50854f3fcee5dacd841b372c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#afa9e1e7d50854f3fcee5dacd841b372c">operator*</a> (const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;) const</td></tr>
<tr class="memdesc:afa9e1e7d50854f3fcee5dacd841b372c"><td class="mdescLeft">&#160;</td><td class="mdescRight">quaternion multiplication is not commutative <a href="#afa9e1e7d50854f3fcee5dacd841b372c">More...</a><br /></td></tr>
<tr class="separator:afa9e1e7d50854f3fcee5dacd841b372c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9173f0915b43cd2ce0249896e171a8ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a9173f0915b43cd2ce0249896e171a8ab">operator+</a> (const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;) const</td></tr>
<tr class="separator:a9173f0915b43cd2ce0249896e171a8ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af42e593b28aeb47120fb1c5c571e5293"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#af42e593b28aeb47120fb1c5c571e5293">operator-</a> (const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;) const</td></tr>
<tr class="separator:af42e593b28aeb47120fb1c5c571e5293"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2230b5d4d70c4cb44f4e7eb86f213c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#af2230b5d4d70c4cb44f4e7eb86f213c5">operator/</a> (int) const</td></tr>
<tr class="separator:af2230b5d4d70c4cb44f4e7eb86f213c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1eb5963d25694400e4e50509fa7be476"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a1eb5963d25694400e4e50509fa7be476">operator/</a> (float) const</td></tr>
<tr class="separator:a1eb5963d25694400e4e50509fa7be476"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa70ac3ecb3a296d2d469c4e0daf57635"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#aa70ac3ecb3a296d2d469c4e0daf57635">operator/</a> (double) const</td></tr>
<tr class="separator:aa70ac3ecb3a296d2d469c4e0daf57635"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5b96eec4852ccaee790cb1387090a81"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ab5b96eec4852ccaee790cb1387090a81">operator=</a> (const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;v)</td></tr>
<tr class="memdesc:ab5b96eec4852ccaee790cb1387090a81"><td class="mdescLeft">&#160;</td><td class="mdescRight">(a,b,c,d) = (0,v.x,v.y,v.z) <a href="#ab5b96eec4852ccaee790cb1387090a81">More...</a><br /></td></tr>
<tr class="separator:ab5b96eec4852ccaee790cb1387090a81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5236c80111bbf83b239bdc91cfdd43e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#aa5236c80111bbf83b239bdc91cfdd43e">Rotate</a> (<a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> v) const</td></tr>
<tr class="separator:aa5236c80111bbf83b239bdc91cfdd43e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8671876840b8ceea6f51584ec640d374"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a8671876840b8ceea6f51584ec640d374">Scalar</a> () const</td></tr>
<tr class="separator:a8671876840b8ceea6f51584ec640d374"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2701cbcee25d051f44be1a4a3bab6f0c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a2701cbcee25d051f44be1a4a3bab6f0c">Set</a> (double qa, double qb, double qc, double qd)</td></tr>
<tr class="separator:a2701cbcee25d051f44be1a4a3bab6f0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ce1cf23657d2a22523bc11d95acf7ac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a2ce1cf23657d2a22523bc11d95acf7ac">SetRotation</a> (double angle, const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;axis)</td></tr>
<tr class="memdesc:a2ce1cf23657d2a22523bc11d95acf7ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the quaternion to <a href="#a2ce1cf23657d2a22523bc11d95acf7ac">More...</a><br /></td></tr>
<tr class="separator:a2ce1cf23657d2a22523bc11d95acf7ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a820d1c0c15c15c49061e728a0a352033"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a820d1c0c15c15c49061e728a0a352033">SetRotation</a> (const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;plane0, const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;plane1)</td></tr>
<tr class="separator:a820d1c0c15c15c49061e728a0a352033"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ad085599a112d37b6c7bc9d019f5e57"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a3ad085599a112d37b6c7bc9d019f5e57">Unitize</a> ()</td></tr>
<tr class="memdesc:a3ad085599a112d37b6c7bc9d019f5e57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scales the quaternion's coordinates so that a*a + b*b + c*c + d*d = 1. <a href="#a3ad085599a112d37b6c7bc9d019f5e57">More...</a><br /></td></tr>
<tr class="separator:a3ad085599a112d37b6c7bc9d019f5e57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f944b92989264bd7a7cb68f7a99d237"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a8f944b92989264bd7a7cb68f7a99d237">Vector</a> () const</td></tr>
<tr class="separator:a8f944b92989264bd7a7cb68f7a99d237"><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:a963a3d7750fb10f095a1076ba200c4c9"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a963a3d7750fb10f095a1076ba200c4c9">Distance</a> (const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;p, const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;q)</td></tr>
<tr class="separator:a963a3d7750fb10f095a1076ba200c4c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2e0017f24e1152961cce97d8b45ef53"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ac2e0017f24e1152961cce97d8b45ef53">Exp</a> (<a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> q)</td></tr>
<tr class="separator:ac2e0017f24e1152961cce97d8b45ef53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55c2d9a6d39ab2b518c603a7e05e25d8"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a55c2d9a6d39ab2b518c603a7e05e25d8">Log</a> (<a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> q)</td></tr>
<tr class="separator:a55c2d9a6d39ab2b518c603a7e05e25d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39fdcf5cfd8d2882ffcff6b1298d1ac8"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a39fdcf5cfd8d2882ffcff6b1298d1ac8">Pow</a> (<a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> q, double t)</td></tr>
<tr class="separator:a39fdcf5cfd8d2882ffcff6b1298d1ac8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f7ed0932a4144a9da5ee9b0cd6f0453"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a1f7ed0932a4144a9da5ee9b0cd6f0453">Rotation</a> (double angle, const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;axis)</td></tr>
<tr class="separator:a1f7ed0932a4144a9da5ee9b0cd6f0453"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f89ae6858b0275dc7559f8a99638e38"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a3f89ae6858b0275dc7559f8a99638e38">Rotation</a> (const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;plane0, const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;plane1)</td></tr>
<tr class="separator:a3f89ae6858b0275dc7559f8a99638e38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a483463908c48f8956079326685a46d1b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a483463908c48f8956079326685a46d1b">Slerp</a> (<a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> q0, <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> q1, double t)</td></tr>
<tr class="separator:a483463908c48f8956079326685a46d1b"><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:ad9487d2d3e2f0eef4b6b0a4692918a48"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ad9487d2d3e2f0eef4b6b0a4692918a48">a</a></td></tr>
<tr class="memdesc:ad9487d2d3e2f0eef4b6b0a4692918a48"><td class="mdescLeft">&#160;</td><td class="mdescRight">quaternion = a + bi + cj + dk <a href="#ad9487d2d3e2f0eef4b6b0a4692918a48">More...</a><br /></td></tr>
<tr class="separator:ad9487d2d3e2f0eef4b6b0a4692918a48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7ce2904f16c283a1e4e005978275243"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ab7ce2904f16c283a1e4e005978275243">b</a></td></tr>
<tr class="separator:ab7ce2904f16c283a1e4e005978275243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a081163f0371dfe698b836f0939e68e42"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a081163f0371dfe698b836f0939e68e42">c</a></td></tr>
<tr class="separator:a081163f0371dfe698b836f0939e68e42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d929b768ea432cb9e2f4d2c45431c05"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a9d929b768ea432cb9e2f4d2c45431c05">d</a></td></tr>
<tr class="separator:a9d929b768ea432cb9e2f4d2c45431c05"><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-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a0d34db53e780c5081c90180ba59ebd92"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a0d34db53e780c5081c90180ba59ebd92">I</a></td></tr>
<tr class="separator:a0d34db53e780c5081c90180ba59ebd92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70fe3af1b1d8598e85e2649029d3f554"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a70fe3af1b1d8598e85e2649029d3f554">Identity</a></td></tr>
<tr class="separator:a70fe3af1b1d8598e85e2649029d3f554"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68ec3851e8d2ee8774e541eea06a69cb"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a68ec3851e8d2ee8774e541eea06a69cb">J</a></td></tr>
<tr class="separator:a68ec3851e8d2ee8774e541eea06a69cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dc264f67e8bdb22726d79d078d3dc7f"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#a9dc264f67e8bdb22726d79d078d3dc7f">K</a></td></tr>
<tr class="separator:a9dc264f67e8bdb22726d79d078d3dc7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5b5284547fce4d835db622a13952c93"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d33/class_o_n___quaternion.html#ac5b5284547fce4d835db622a13952c93">Zero</a></td></tr>
<tr class="separator:ac5b5284547fce4d835db622a13952c93"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a6049aaea1fef16350e0a4bb31a594e17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6049aaea1fef16350e0a4bb31a594e17">&#9670;&nbsp;</a></span>ON_Quaternion() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ON_Quaternion::ON_Quaternion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a18107027364c01893a122d08e36b4996"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18107027364c01893a122d08e36b4996">&#9670;&nbsp;</a></span>ON_Quaternion() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Quaternion::ON_Quaternion </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qd</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac31b4c41441825e5826b79376edbfa9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac31b4c41441825e5826b79376edbfa9f">&#9670;&nbsp;</a></span>ON_Quaternion() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ON_Quaternion::ON_Quaternion </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>(a,b,c,d) = (0,v.x,v.y,v.z) </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7c57a2950765a6ccaf75a9616506b213"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c57a2950765a6ccaf75a9616506b213">&#9670;&nbsp;</a></span>Conjugate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Conjugate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the conjugate of the quaternion = (a,-b,-c,-d). </p>
</div>
</div>
<a id="a963a3d7750fb10f095a1076ba200c4c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a963a3d7750fb10f095a1076ba200c4c9">&#9670;&nbsp;</a></span>Distance()</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_Quaternion::Distance </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;&#160;</td>
<td class="paramname"><em>q</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">
<dl class="section return"><dt>Returns</dt><dd>The distance or norm of the difference between the two quaternions. = (p - q).<a class="el" href="../../d9/d33/class_o_n___quaternion.html#ae618b56f8488cc484bea9d7ce4d03dac">Length()</a>. </dd></dl>
</div>
</div>
<a id="aa04e085f17f83b02e75989306470dcd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa04e085f17f83b02e75989306470dcd8">&#9670;&nbsp;</a></span>DistanceTo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::DistanceTo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;&#160;</td>
<td class="paramname"><em>q</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The distance or norm of the difference between the two quaternions. = ("this" - q).<a class="el" href="../../d9/d33/class_o_n___quaternion.html#ae618b56f8488cc484bea9d7ce4d03dac">Length()</a>. </dd></dl>
</div>
</div>
<a id="ac2e0017f24e1152961cce97d8b45ef53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2e0017f24e1152961cce97d8b45ef53">&#9670;&nbsp;</a></span>Exp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Exp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td>
<td class="paramname"><em>q</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">
<dl class="section return"><dt>Returns</dt><dd>exp(q) = e^a*( cos(|V|) + V/|V|*sin(|V|) ), where V = b*i + c*j + d*k. </dd></dl>
</div>
</div>
<a id="afaa88efe61d7f72b59fd6d2cdc61361d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afaa88efe61d7f72b59fd6d2cdc61361d">&#9670;&nbsp;</a></span>GetRotation() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::GetRotation </td>
<td>(</td>
<td class="paramtype">double &amp;&#160;</td>
<td class="paramname"><em>angle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">angle</td><td>[out] in radians</td></tr>
<tr><td class="paramname">axis</td><td>[out] unit axis of rotation of 0 if (b,c,d) is the zero vector.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The rotation defined by the quaternion. </dd></dl>
<p>If the quaternion is not unitized, the rotation of its unitized form is returned. </p>
</div>
</div>
<a id="afea34ea8a527a736523bb70520889991"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afea34ea8a527a736523bb70520889991">&#9670;&nbsp;</a></span>GetRotation() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::GetRotation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> &amp;&#160;</td>
<td class="paramname"><em>xform</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>The transformation returned by this function has the property that xform*V = q.Rotate(V). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">xform</td><td>[out]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A transformation matrix that performs the rotation defined by the quaternion. </dd></dl>
<p>If the quaternion is not unitized, the rotation of its unitized form is returned. Do not confuse the result of this function the matrix returned by <a class="el" href="../../d9/d33/class_o_n___quaternion.html#adc30079f12ae54e9979ca5369c51fe91">ON_Quaternion::MatrixForm()</a>. The transformation returned by this function has the property that xform*V = q.Rotate(V). </p>
</div>
</div>
<a id="aac26334d57e502cb81b4e4de7a88d36c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac26334d57e502cb81b4e4de7a88d36c">&#9670;&nbsp;</a></span>GetRotation() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::GetRotation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;&#160;</td>
<td class="paramname"><em>plane</em></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">plane</td><td>[out]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The frame created by applying the quaternion's rotation to the canonical world frame (1,0,0),(0,1,0),(0,0,1). </dd></dl>
</div>
</div>
<a id="a1bc13ce7ad41adafb53424d9fcc006ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1bc13ce7ad41adafb53424d9fcc006ec">&#9670;&nbsp;</a></span>Inverse()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Inverse </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>Sets the quaternion to a/L2, -b/L2, -c/L2, -d/L2, where L2 = length squared = (a*a + b*b + c*c + d*d). This is the multiplicative inverse, i.e., (a,b,c,d)*(a/L2, -b/L2, -c/L2, -d/L2) = (1,0,0,0). If "this" is the zero quaternion, then the zero quaternion is returned. </dd></dl>
</div>
</div>
<a id="ab57b9e8619d188c2517a6b7f6e705619"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab57b9e8619d188c2517a6b7f6e705619">&#9670;&nbsp;</a></span>Invert()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::Invert </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the quaternion to a/L2, -b/L2, -c/L2, -d/L2, where L2 = length squared = (a*a + b*b + c*c + d*d). This is the multiplicative inverse, i.e., (a,b,c,d)*(a/L2, -b/L2, -c/L2, -d/L2) = (1,0,0,0). </p>
<dl class="section return"><dt>Returns</dt><dd>True if successful. False if the quaternion is zero and cannot be inverted. </dd></dl>
</div>
</div>
<a id="a01f25c00ead2e578de541dc5be06131b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01f25c00ead2e578de541dc5be06131b">&#9670;&nbsp;</a></span>IsNotZero()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::IsNotZero </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>True if a, b, c, and d are all valid, finite and at least one is non-zero. </dd></dl>
</div>
</div>
<a id="a5993b62fcf53705ecfaeb521774b5a01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5993b62fcf53705ecfaeb521774b5a01">&#9670;&nbsp;</a></span>IsScalar()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::IsScalar </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>True if b, c, and d are all zero. </dd></dl>
</div>
</div>
<a id="acd60d68d08fc0e708f41338d92059df2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd60d68d08fc0e708f41338d92059df2">&#9670;&nbsp;</a></span>IsValid()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::IsValid </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>True if a, b, c, and d are valid finite IEEE doubles. </dd></dl>
</div>
</div>
<a id="a8e65d466cf9a3cb1d7ba5be20c1a4af0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e65d466cf9a3cb1d7ba5be20c1a4af0">&#9670;&nbsp;</a></span>IsVector()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::IsVector </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>True if a = 0 and at least one of b, c, or d is not zero. </dd></dl>
</div>
</div>
<a id="ab9f5b7df609a1d1903c3521517ec56a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9f5b7df609a1d1903c3521517ec56a9">&#9670;&nbsp;</a></span>IsZero()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::IsZero </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>True if a, b, c, and d are all zero. </dd></dl>
</div>
</div>
<a id="ae618b56f8488cc484bea9d7ce4d03dac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae618b56f8488cc484bea9d7ce4d03dac">&#9670;&nbsp;</a></span>Length()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::Length </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>Returns the length or norm of the quaternion sqrt(a*a + b*b + c*c + d*d). </dd></dl>
</div>
</div>
<a id="a7374cffe3374e0cde4e047a07f8131da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7374cffe3374e0cde4e047a07f8131da">&#9670;&nbsp;</a></span>LengthSquared()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::LengthSquared </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>Returns a*a + b*b + c*c + d*d. </dd></dl>
</div>
</div>
<a id="a55c2d9a6d39ab2b518c603a7e05e25d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55c2d9a6d39ab2b518c603a7e05e25d8">&#9670;&nbsp;</a></span>Log()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Log </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td>
<td class="paramname"><em>q</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">
<dl class="section return"><dt>Returns</dt><dd>log(q) = log(|q|) + V/|V|*acos(a/|q|), where V = b*i + c*j + d*k. </dd></dl>
</div>
</div>
<a id="adc30079f12ae54e9979ca5369c51fe91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc30079f12ae54e9979ca5369c51fe91">&#9670;&nbsp;</a></span>MatrixForm()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d3/d13/class_o_n___xform.html">ON_Xform</a> ON_Quaternion::MatrixForm </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><p class="startdd">4x4 real valued matrix form of the quaternion </p><pre class="fragment"> a b c d
-b a -d c
-c d a -b
-d -c b a
</pre><p class="enddd">which has the same arithmetic properties in as the quaternion. </p>
</dd></dl>
<p>Do not confuse this with the rotation defined by the quaternion. This function will only be interesting to math nerds and is not useful in rendering or animation applications. </p>
</div>
</div>
<a id="a6d164ed82cd2bee7713f9f0004c4c4c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d164ed82cd2bee7713f9f0004c4c4c2">&#9670;&nbsp;</a></span>operator*() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::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">
<p>arithmetic operators </p>
</div>
</div>
<a id="a5cf1e56c7b174370a13be12d435b21c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cf1e56c7b174370a13be12d435b21c0">&#9670;&nbsp;</a></span>operator*() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::operator* </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad06737eeb2f0d1b745e2308a5b52e5b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad06737eeb2f0d1b745e2308a5b52e5b2">&#9670;&nbsp;</a></span>operator*() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::operator* </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afa9e1e7d50854f3fcee5dacd841b372c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa9e1e7d50854f3fcee5dacd841b372c">&#9670;&nbsp;</a></span>operator*() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::operator* </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>quaternion multiplication is not commutative </p>
</div>
</div>
<a id="a9173f0915b43cd2ce0249896e171a8ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9173f0915b43cd2ce0249896e171a8ab">&#9670;&nbsp;</a></span>operator+()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::operator+ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af42e593b28aeb47120fb1c5c571e5293"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af42e593b28aeb47120fb1c5c571e5293">&#9670;&nbsp;</a></span>operator-()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::operator- </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af2230b5d4d70c4cb44f4e7eb86f213c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2230b5d4d70c4cb44f4e7eb86f213c5">&#9670;&nbsp;</a></span>operator/() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::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="a1eb5963d25694400e4e50509fa7be476"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1eb5963d25694400e4e50509fa7be476">&#9670;&nbsp;</a></span>operator/() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::operator/ </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aa70ac3ecb3a296d2d469c4e0daf57635"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa70ac3ecb3a296d2d469c4e0daf57635">&#9670;&nbsp;</a></span>operator/() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::operator/ </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab5b96eec4852ccaee790cb1387090a81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5b96eec4852ccaee790cb1387090a81">&#9670;&nbsp;</a></span>operator=()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&amp; ON_Quaternion::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>(a,b,c,d) = (0,v.x,v.y,v.z) </p>
</div>
</div>
<a id="a39fdcf5cfd8d2882ffcff6b1298d1ac8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39fdcf5cfd8d2882ffcff6b1298d1ac8">&#9670;&nbsp;</a></span>Pow()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Pow </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td>
<td class="paramname"><em>q</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</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">
<dl class="section return"><dt>Returns</dt><dd>q^t = Exp(t*Log(q)) </dd></dl>
</div>
</div>
<a id="aa5236c80111bbf83b239bdc91cfdd43e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5236c80111bbf83b239bdc91cfdd43e">&#9670;&nbsp;</a></span>Rotate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> ON_Quaternion::Rotate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a>&#160;</td>
<td class="paramname"><em>v</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">v</td><td>[in]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>R*v, where R is the rotation defined by the unit quaternion. This is mathematically the same as the values (Inverse(q)*(0,x,y,z)*q).<a class="el" href="../../d9/d33/class_o_n___quaternion.html#a8f944b92989264bd7a7cb68f7a99d237">Vector()</a> and (q.Conjugate()*(0,x,y,x)*q/q.<a class="el" href="../../d9/d33/class_o_n___quaternion.html#a7374cffe3374e0cde4e047a07f8131da">LengthSquared()</a>).<a class="el" href="../../d9/d33/class_o_n___quaternion.html#a8f944b92989264bd7a7cb68f7a99d237">Vector()</a> </dd></dl>
<p>If you need to rotate more than a dozen or so vectors, it will be more efficient to call GetRotation(ON_Xform&amp; xform) and multiply the vectors by xform. </p>
</div>
</div>
<a id="a1f7ed0932a4144a9da5ee9b0cd6f0453"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f7ed0932a4144a9da5ee9b0cd6f0453">&#9670;&nbsp;</a></span>Rotation() <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 <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Rotation </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>angle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>axis</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">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">angle</td><td>[in] in radians</td></tr>
<tr><td class="paramname">axis</td><td>[in] axis of rotation</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><p class="startdd">The unit quaternion </p><pre class="fragment"> cos(angle/2), sin(angle/2)*x, sin(angle/2)*y, sin(angle/2)*z
</pre><p class="enddd">where (x,y,z) is the unit vector parallel to axis. This is the unit quaternion that represents the rotation of angle about axis. </p>
</dd></dl>
</div>
</div>
<a id="a3f89ae6858b0275dc7559f8a99638e38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f89ae6858b0275dc7559f8a99638e38">&#9670;&nbsp;</a></span>Rotation() <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 <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Rotation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;&#160;</td>
<td class="paramname"><em>plane0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;&#160;</td>
<td class="paramname"><em>plane1</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">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">plane0</td><td>[in]</td></tr>
<tr><td class="paramname">plane1</td><td>[in]</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The unit quaternion that represents the the rotation that maps plane0.xaxis to plane1.xaxis, plane0.yaxis to plane1.yaxis, and plane0.zaxis to plane1.zaxis. </dd></dl>
<p>The plane origins are ignored. </p>
</div>
</div>
<a id="a8671876840b8ceea6f51584ec640d374"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8671876840b8ceea6f51584ec640d374">&#9670;&nbsp;</a></span>Scalar()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::Scalar </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>The "real" or "scalar" part of the quaternion = a. </dd></dl>
</div>
</div>
<a id="a2701cbcee25d051f44be1a4a3bab6f0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2701cbcee25d051f44be1a4a3bab6f0c">&#9670;&nbsp;</a></span>Set()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Quaternion::Set </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qa</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>qd</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2ce1cf23657d2a22523bc11d95acf7ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ce1cf23657d2a22523bc11d95acf7ac">&#9670;&nbsp;</a></span>SetRotation() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Quaternion::SetRotation </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>angle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> &amp;&#160;</td>
<td class="paramname"><em>axis</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the quaternion to </p>
<p>cos(angle/2), sin(angle/2)*x, sin(angle/2)*y, sin(angle/2)*z</p>
<p>where (x,y,z) is the unit vector parallel to axis. This is the unit quaternion that represents the rotation of angle about axis. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">angle</td><td>[in] in radians</td></tr>
<tr><td class="paramname">axis</td><td>[in] axis of rotation</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
</div>
</div>
<a id="a820d1c0c15c15c49061e728a0a352033"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a820d1c0c15c15c49061e728a0a352033">&#9670;&nbsp;</a></span>SetRotation() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ON_Quaternion::SetRotation </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;&#160;</td>
<td class="paramname"><em>plane0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d4/d48/class_o_n___plane.html">ON_Plane</a> &amp;&#160;</td>
<td class="paramname"><em>plane1</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">plane0</td><td>[in]</td></tr>
<tr><td class="paramname">plane1</td><td>[in]</td></tr>
</table>
</dd>
</dl>
<p>The plane origins are ignored. </p>
</div>
</div>
<a id="a483463908c48f8956079326685a46d1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a483463908c48f8956079326685a46d1b">&#9670;&nbsp;</a></span>Slerp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Slerp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td>
<td class="paramname"><em>q0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a>&#160;</td>
<td class="paramname"><em>q1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</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="a3ad085599a112d37b6c7bc9d019f5e57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ad085599a112d37b6c7bc9d019f5e57">&#9670;&nbsp;</a></span>Unitize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool ON_Quaternion::Unitize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Scales the quaternion's coordinates so that a*a + b*b + c*c + d*d = 1. </p>
<dl class="section return"><dt>Returns</dt><dd>True if successful. False if the quaternion is zero and cannot be unitized. </dd></dl>
</div>
</div>
<a id="a8f944b92989264bd7a7cb68f7a99d237"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f944b92989264bd7a7cb68f7a99d237">&#9670;&nbsp;</a></span>Vector()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d5/dae/class_o_n__3d_vector.html">ON_3dVector</a> ON_Quaternion::Vector </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>The "vector" or "imaginary" part of the quaternion = (b,c,d) </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ad9487d2d3e2f0eef4b6b0a4692918a48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9487d2d3e2f0eef4b6b0a4692918a48">&#9670;&nbsp;</a></span>a</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::a</td>
</tr>
</table>
</div><div class="memdoc">
<p>quaternion = a + bi + cj + dk </p>
</div>
</div>
<a id="ab7ce2904f16c283a1e4e005978275243"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7ce2904f16c283a1e4e005978275243">&#9670;&nbsp;</a></span>b</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::b</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a081163f0371dfe698b836f0939e68e42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a081163f0371dfe698b836f0939e68e42">&#9670;&nbsp;</a></span>c</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::c</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9d929b768ea432cb9e2f4d2c45431c05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d929b768ea432cb9e2f4d2c45431c05">&#9670;&nbsp;</a></span>d</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double ON_Quaternion::d</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0d34db53e780c5081c90180ba59ebd92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d34db53e780c5081c90180ba59ebd92">&#9670;&nbsp;</a></span>I</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::I</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="a70fe3af1b1d8598e85e2649029d3f554"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70fe3af1b1d8598e85e2649029d3f554">&#9670;&nbsp;</a></span>Identity</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Identity</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="a68ec3851e8d2ee8774e541eea06a69cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68ec3851e8d2ee8774e541eea06a69cb">&#9670;&nbsp;</a></span>J</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::J</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="a9dc264f67e8bdb22726d79d078d3dc7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dc264f67e8bdb22726d79d078d3dc7f">&#9670;&nbsp;</a></span>K</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::K</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="ac5b5284547fce4d835db622a13952c93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5b5284547fce4d835db622a13952c93">&#9670;&nbsp;</a></span>Zero</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="../../d9/d33/class_o_n___quaternion.html">ON_Quaternion</a> ON_Quaternion::Zero</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>
</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:32 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>