Difference between revisions of "Render Part A Assignment"
Line 45: | Line 45: | ||
So, the bottom left point A's x coordinate should be <code>-half_side_length</code> and its y coordinate should be <code>-1/3 height</code>. | So, the bottom left point A's x coordinate should be <code>-half_side_length</code> and its y coordinate should be <code>-1/3 height</code>. | ||
+ | |||
+ | {{RubyToRun|equilateral_triangle|render/assignment|main}} | ||
[[File:Render_equilateral_triangle.png]] | [[File:Render_equilateral_triangle.png]] | ||
===Rectangle=== | ===Rectangle=== | ||
+ | {{RubyToRun|rectangle|render/assignment|main}} | ||
+ | |||
[[File:Render_rectangle.png]] | [[File:Render_rectangle.png]] | ||
Line 56: | Line 60: | ||
<nowiki> slice_count = 32 | <nowiki> slice_count = 32 | ||
delta_theta = (2*Math::PI) /slice_count</nowiki> | delta_theta = (2*Math::PI) /slice_count</nowiki> | ||
+ | |||
+ | {{RubyToRun|ellipse|render/assignment|main}} | ||
[[File:Render_ellipse.png]] | [[File:Render_ellipse.png]] | ||
Line 66: | Line 72: | ||
Note: a Chord with 32 slices will have 33 points. | Note: a Chord with 32 slices will have 33 points. | ||
+ | |||
+ | {{RubyToRun|chord|render/assignment|main}} | ||
[[File:Render_chord.png]] | [[File:Render_chord.png]] | ||
===Image=== | ===Image=== | ||
+ | {{RubyToRun|image|render/assignment|main}} | ||
+ | |||
[[File:Render_image.png]] | [[File:Render_image.png]] | ||
===Text=== | ===Text=== | ||
+ | {{RubyToRun|text|render/assignment|main}} | ||
+ | |||
[[File:Render_text.png]] | [[File:Render_text.png]] | ||
Line 95: | Line 107: | ||
| [[File:Bézier_4_big.gif]] | | [[File:Bézier_4_big.gif]] | ||
|} | |} | ||
+ | |||
+ | {{RubyToRun|bezier_curve|render/assignment|main}} | ||
[[File:Render_bezier_curve.png]] | [[File:Render_bezier_curve.png]] |
Revision as of 12:47, 23 November 2020
OpenGL
GLUT
Code to Investigate
Cavalcade of Graphics
ruby/examples/cavalcade_of_graphics.rb
Code to Implement
Components
Each of the renderable components has its own file in the ruby/render/assignment directory.
Equilateral Triangle
The triangle should be equilateral, rendered with its the origin at the center of mass.
Your constructor should accept a half_side_length
parameter.
The height of the triangle should be side_length * sqrt(3)/2
The center of mass is one third from the bottom.
So, the bottom left point A's x coordinate should be -half_side_length
and its y coordinate should be -1/3 height
.
file to run: | src/main/ruby/render/assignment/equilateral_triangle.rb | ![]() |
Rectangle
file to run: | src/main/ruby/render/assignment/rectangle.rb | ![]() |
Ellipse
Note: to produce the reference image the code below was used:
slice_count = 32 delta_theta = (2*Math::PI) /slice_count
file to run: | src/main/ruby/render/assignment/ellipse.rb | ![]() |
Chord
Note: to produce the reference image the code below was used:
slice_count = 32 delta_theta = (@theta_z-@theta_a) / slice_count
Note: a Chord with 32 slices will have 33 points.
file to run: | src/main/ruby/render/assignment/chord.rb | ![]() |
Image
file to run: | src/main/ruby/render/assignment/image.rb | ![]() |
Text
file to run: | src/main/ruby/render/assignment/text.rb | ![]() |
Bézier Curve
Point2
To support Bézier curves you will want to implement Point in point2.rb. You may wish to use Ruby's convenient Struct construct.
You should be able to construct a Point2 with an x and a y and be able to access those values.
Component
Quadratic (Second Order) Curve: | ![]() |
![]() |
Quadratic (Third Order) Curve: | ![]() |
![]() |
Fourth Order Curve: | ![]() |
![]() |
file to run: | src/main/ruby/render/assignment/bezier_curve.rb | ![]() |
Testing Your Solution
Visual Comparison
file to run: | src/test/ruby/render/part_a/part_a_test_snapshots_web_page_generator.rb | ![]() |
Unit Test
file: | src/test/ruby/render/part_a/part_a_unit_test.rb | ![]() |
note: ensure that you have removed all printing to receive credit for any assignment.