Difference between revisions of "3D Fundamentals Tutorial 3"
From Chilipedia
(→Video) |
(→Video) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 18: | Line 18: | ||
* Deriving the three 3D rotation matrices (around the x,y,z axes) [https://youtu.be/cN97hkDrzcc?t=5m16s 5:16] | * Deriving the three 3D rotation matrices (around the x,y,z axes) [https://youtu.be/cN97hkDrzcc?t=5m16s 5:16] | ||
* Implementing rotation matrices in the <code>Mat3</code> class [https://youtu.be/cN97hkDrzcc?t=8m25s 8:25] | * Implementing rotation matrices in the <code>Mat3</code> class [https://youtu.be/cN97hkDrzcc?t=8m25s 8:25] | ||
− | * How to rotate around any orientation? | + | * How to rotate around any orientation? Concatenate the matrices [https://youtu.be/cN97hkDrzcc?t=14m17s 14:17] |
* Switching between multiple 3D interpretations by your brain [https://youtu.be/cN97hkDrzcc?t=16m18s 16:18] | * Switching between multiple 3D interpretations by your brain [https://youtu.be/cN97hkDrzcc?t=16m18s 16:18] | ||
* The order of concatenation in 3D rotation matters [https://youtu.be/cN97hkDrzcc?t=17m29s 17:29] | * The order of concatenation in 3D rotation matters [https://youtu.be/cN97hkDrzcc?t=17m29s 17:29] | ||
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
− | :* The transformation is not | + | :* The transformation is not commutative and different orders result in different orientations |
:* Just pick one order and stich with it. As long as you're consistent, there is no problem | :* Just pick one order and stich with it. As long as you're consistent, there is no problem | ||
</div> | </div> | ||
− | + | * Direction of rotation: the left hand rule again [https://youtu.be/cN97hkDrzcc?t=19m49s 19:49] | |
+ | * Wrapping angles in a [-pi,+pi) range [https://youtu.be/cN97hkDrzcc?t=21m09s 21:09] | ||
+ | <div class="mw-collapsible-content"> | ||
+ | :* Angle data in radians are periodic (period = 2*pi) | ||
+ | :* It's good practice to keep angle data in one fixed range (width 2*pi) as floating point data loses precision if they grow large | ||
+ | </div> | ||
</div> | </div> | ||
Latest revision as of 01:53, 28 April 2020
In this video we start from the canonical 2D rotation transformation matrix and extend it to 3D to derive rotation around the Z, Y, and X-axes. We also jerk off said axes, using the left-hand rule of course (right hand is busy with the mouse).
Contents
2D Rotation
For an in-depth explanation / derivation of the formula for 2D rotation, check out this video. There is also another video in the same series that deals with encoding transformations in matrices, and it can be found here.
Video
The tutorial video is on YouTube here.
- How does sight (the Retina) work? How do we see 3D? 0:26
- The retina is basically a 2D image sensor array
- It projects 3D space onto a 2D interpretation
- There are numerous cues to allow us to perceive 3D. One is rotating an image along various axes
- Applying 3D rotation to our cube 1:46
- Deriving the three 3D rotation matrices (around the x,y,z axes) 5:16
- Implementing rotation matrices in the
Mat3
class 8:25 - How to rotate around any orientation? Concatenate the matrices 14:17
- Switching between multiple 3D interpretations by your brain 16:18
- The order of concatenation in 3D rotation matters 17:29
- The transformation is not commutative and different orders result in different orientations
- Just pick one order and stich with it. As long as you're consistent, there is no problem
- Angle data in radians are periodic (period = 2*pi)
- It's good practice to keep angle data in one fixed range (width 2*pi) as floating point data loses precision if they grow large
Downloads
The GitHub repository for the tutorial code is here.