| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Asciidoctor 1.5.4"><title>Math Cheat Sheet</title><link rel="stylesheet" href="./asciidoctor.css">
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
- <link rel="stylesheet" href="./coderay-asciidoctor.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css"><link rel="stylesheet" href="/home/travis/build/jMonkeyEngine/wiki/build/asciidoc/html5/jme3/intermediate/twemoji-awesome.css"></head><body class="article toc2 toc-left"><div id="header"><div id="toolbar"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/src/docs/asciidoc/jme3/intermediate/math.adoc"><i class="fa fa-pencil-square" aria-hidden="true"></i></a><a href="https://github.com/jMonkeyEngine/wiki/new/master/src/docs/asciidoc/jme3/intermediate/"><i class="fa fa-plus-square" aria-hidden="true"></i></a><input dir="auto" style="position: relative; vertical-align: top;" spellcheck="false" autocomplete="off" class="searchbox__input aa-input" id="doc-search" name="search" placeholder="Search in the doc" required="required" type="search"></div><h1>Math Cheat Sheet</h1><div class="details"><span class="author" id="author"></span><br><span id="revnumber">version ,</span> <span id="revdate">2016/03/17 20:48</span></div><div id="toc" class="toc2"><div id="toctitle">Table of Contents</div><ul class="sectlevel1"><li><a href="#formulas">Formulas</a></li><li><a href="#local-vs-non-local-methods">Local vs Non-local methods?</a></li></ul></div></div><div id="content"><div class="sect1"><h2 id="formulas">Formulas</h2><div class="sectionbody"><div class="admonitionblock note"><table><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content"><div class="paragraph"><p>Typically you have to string these formulas together. Look in the table for what you want, and what you have. If the two are not the same line, than you need conversion steps inbetween. E.g. if you have an angle in degrees, but the formula expects radians: 1) convert degrees to radians, 2) use the radians formula on the result.</p></div></td></tr></table></div>
- <table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 33.3333%;"><col style="width: 33.3333%;"><col style="width: 33.3334%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">I have…</th><th class="tableblock halign-left valign-top">I want…</th><th class="tableblock halign-left valign-top">Formula</th></tr></thead><tbody><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>normalized direction and length<br>
- n1,d1</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>a vector that goes that far in that direction<br>
- new direction vector v0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>v0 = n1.mult(d1)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>point and direction vector<br>
- p1,v1</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to move the point<br>
- new point p0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>p0 = p1.add(v1)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>direction, position and distance<br>
- v1,p1,dist</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Position at distance<br>
- p2</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>v1.normalzeLocal()<br>
- scaledDir = v1.mult(dist)<br>
- p2 = p1.add(scaledDir)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>two direction vectors or normals<br>
- v1,v2</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to combine both directions<br>
- new direction vector v0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>v0 = v1.add(v2)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>two points<br>
- p1, p2</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>distance between two points<br>
- new scalar d0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>d0 = p1.subtract(p2).length()<br>
- d0 = p1.distance(p2)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>two points<br>
- p1, p2</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>the direction from p2 to p1<br>
- new direction vector v0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>v0 = p1.substract(p2)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>two points, a fraction<br>
- p1, p2, h=0.5f</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>the point “halfway (h=0.5f) between the two points<br>
- new interpolated point p0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>p0 = FastMath.interpolateLinear(h,p1,p2)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>a direction vector, an up vector<br>
- v, up</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>A rotation around this up axis towards this direction<br>
- new Quaternion q</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Quaternion q = new Quaternion();<br>
- q.lookAt(v,up)</p></div></div></td></tr></tbody></table>
- <table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 33.3333%;"><col style="width: 33.3333%;"><col style="width: 33.3334%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">I have…</th><th class="tableblock halign-left valign-top">I want…</th><th class="tableblock halign-left valign-top">Formula</th></tr></thead><tbody><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>angle in degrees<br>
- a</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to convert angle a from degrees to radians<br>
- new float angle phi</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>phi = a / 180 * FastMath.PI;<br>
- OR<br>
- phi=a.mult(FastMath.DEG_TO_RAD);</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>angle in radians<br>
- phi</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to convert angle phi from radians to degrees<br>
- new float angle a</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>a = phi * 180 / FastMath.PI</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>radian angle and x axis<br>
- phi, x</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to rotate around x axis<br>
- new quaternion q0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>q0.fromAngleAxis( phi, Vector3f.UNIT_X )</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>radian angle and y axis<br>
- phi, y</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to rotate around y axis<br>
- new quaternion q0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>q0.fromAngleAxis( phi, Vector3f.UNIT_Y )</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>radian angle and z axis<br>
- phi, z</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to rotate around z axis<br>
- new quaternion q0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>q0.fromAngleAxis( phi, Vector3f.UNIT_Z )</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>several quaternions<br>
- q1, q2, q3</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to combine rotations, in that order<br>
- new quaternion q0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>q0 = q1.mult(q2).mult(q3)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>point and quaternion<br>
- p1, q1</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to rotate the point around origin<br>
- new point p0</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>p0 = q1.mult(p1)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>angle in radians and radius<br>
- phi,r</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>to arrange or move objects horizontally in a circle (with y=0)<br>
- x and z coordinates</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>float x = FastMath.cos(phi)*r;<br>
- float z = FastMath.sin(phi)*r;</p></div></div></td></tr></tbody></table></div></div>
- <div class="sect1"><h2 id="local-vs-non-local-methods">Local vs Non-local methods?</h2><div class="sectionbody"><div class="ulist"><ul><li><p>Non-local method creates new object as return value, v remains unchanged.<br>
- <code>v2 = v.mult(); v2 = v.add(); v2 = v.subtract();</code> etc</p></li><li><p>Local method changes v directly!<br>
- <code>v.multLocal(); v.addLocal(); v.subtractLocal();</code> etc</p></li></ul></div></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2020-05-21 00:29:23 +00:00</div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script><script>docsearch({
- apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
- indexName: 'jmonkeyengine',
- inputSelector: '#doc-search',
- debug: false // Set debug to true if you want to inspect the dropdown
- });</script></body></html>
|