Advanced C++ Programming Tutorial 4
From Chilipedia
Why don't you sit on this and rotate? Oh you don't know how? Well allow me to elucidate. Srsly tho, rotation math is pretty damn important shit, so pay attention.
Contents
Topics
Part 1
- Angles, degrees, radians, and π
- Sine, cosine, and the unit circle
- Arcsin, arccos
- SOH-CAH-(TOA)
Part 2
- Derivation of rotation formula: arcsin/arccos
- Angle sum theorem (trig identity)
- Derivation of rotation formula: angle sum theorem
- Derivation of rotation formula: vector derivation
- Using rotation to solve A3 homework (rotate to get plank normal)
Part 3
- Vec2 rotation functions
- Basic rotation of model
- Implementing rotation into
Drawable
pipeline - Optimizing pipeline for rotation
Notes / Errata
- In Tutorial 4.3, on screen the
return
statement is missing from the star generation code as shown on screen. It is added off screen. - The code for the animation (either end of 4.3 or end of homework), there is a member variable for
time
that is not initialized. This can cause sporatic problems, especially in debug mode (it often works fine in release, just depends on what happens to be in that spot in memory). This is fixed in a future video.
Video Timestamp Index
- Proper definition of an angle 0:55
- Visualization in a Unit Circle 2:00
- Pi and its relation to a circle 5:05
- Radians vs. Degrees 7:14
- Trigonometry, meaning of cos & sin: from angles to coordinates 9:20
- arcsin & arccos: from coordinates to angles 13:29
- Extension to general (non-unit) circles 16:15
- Rotation: the most important transformation in 3D computer graphics 18:38
- Understanding the
Star
vertices generation algorithm 19:28 - SOH-CAH-TOA 22:56
- How to rotate an arbitrary point anywhere in the 2D coordinate system: three derivations 0:38
- Derivation 1: Basic, naive SOH-CAH-TOA application 1:03
- Derivation 2: Using Trigonometric Identities: Angle sum & difference identities 3:52
- Derivation 3: Chili's intuitive solution using the unit circle 8:56
- Getting surface normals using rotation; clockwise 90 degrees rotation 15:55
- Timestamps: work in progress
Links
- GitHub Repo (advmath)
- Note that the code for this tutorial can be found on the <starfield> branch of the repo not in <master>
Homework
Implement rotation of the camera in the world using keyboard controls (Q and E keys for rotation).