Difference between revisions of "Advanced C++ Programming Tutorial 2"

From Chilipedia
Jump to: navigation, search
(Video Timestamp Index)
(Video Timestamp Index)
Line 19: Line 19:
 
* What are transformations? [https://youtu.be/8_U_pake6J0?t=0m26s 0:26]
 
* What are transformations? [https://youtu.be/8_U_pake6J0?t=0m26s 0:26]
 
* Storing vertices and drawing polygons/polylines [https://youtu.be/8_U_pake6J0?t=1m00s 1:00]
 
* Storing vertices and drawing polygons/polylines [https://youtu.be/8_U_pake6J0?t=1m00s 1:00]
* Implementing <code>Graphics::DrawPolyline()</code> [https://youtu.be/8_U_pake6J0?t=2m30s 2:30]
+
:* Implementing <code>Graphics::DrawClosedPolyline()</code> [https://youtu.be/8_U_pake6J0?t=2m30s 2:30]
* Introducing a <code>Star</code> polygon generator class [https://youtu.be/8_U_pake6J0?t=3m40s 3:40]
+
:* Introducing a <code>Star</code> polygon generator class [https://youtu.be/8_U_pake6J0?t=3m40s 3:40]
 +
* Clipping (trivial implementation) [https://youtu.be/8_U_pake6J0?t=4m33s 4:22]
 +
:* For more advanced line clipping, you can use the Cohen-Sutherland line clipping algorithm
 +
* Translation: moving your model on the screen [https://youtu.be/8_U_pake6J0?t=6m13s 6:13]
 +
* Coordinate systems: screen vs. world (/math model) coordinates [https://youtu.be/8_U_pake6J0?t=7m09s 7:09]
 +
:* Implementing a Coordinate Transformer class [https://youtu.be/8_U_pake6J0?t=8m25s 8:25]
 +
::- Essentially this is a "screen translator"; a structured way to apply transformations
 +
::- analogy of an "assembly line", this will be developed into a Pipeline system
 +
:* Implementing a persistant <code>Entity</code> class to hold models [https://youtu.be/8_U_pake6J0?t=13m37s 13:37]
  
 
[https://youtu.be/ARCytFIwis8 Tutorial 2.2]
 
[https://youtu.be/ARCytFIwis8 Tutorial 2.2]

Revision as of 07:30, 29 March 2020

In this tutorial we learn how to transform our shit. Move it around, make it bigger (no pills or pumps required), flip it and reverse it. And later on we make a camera system to scroll our shit in the world. You're gonna like it.

Topics

Part 1

  • Polyline drawing
  • Vertices
  • Trivial line clipping
  • Translation
  • Flipping across an axis
  • Screen coordinate transformation
  • Scaling

Part 2

  • Camera scrolling
  • Concatenating (combining) transforms
  • Drawable packet design

Video Timestamp Index

Tutorial 2.1

  • What are transformations? 0:26
  • Storing vertices and drawing polygons/polylines 1:00
  • Implementing Graphics::DrawClosedPolyline() 2:30
  • Introducing a Star polygon generator class 3:40
  • Clipping (trivial implementation) 4:22
  • For more advanced line clipping, you can use the Cohen-Sutherland line clipping algorithm
  • Translation: moving your model on the screen 6:13
  • Coordinate systems: screen vs. world (/math model) coordinates 7:09
  • Implementing a Coordinate Transformer class 8:25
- Essentially this is a "screen translator"; a structured way to apply transformations
- analogy of an "assembly line", this will be developed into a Pipeline system
  • Implementing a persistant Entity class to hold models 13:37

Tutorial 2.2

  • WORK-IN-PROGRESS

Links

Homework

  1. Create random starfield in large rectangular region with randomized positions, sizes, and shapes. Stars should not overlap.
  2. Implement scrolling via mouse dragging.
  3. Process vertices in-place (don't use a buffered polyline copy).
  4. Only draw models that appear in the viewport.
  5. Animate the scale (size) and color of stars so that they pulsate.

The Homework solution is here.

See also