Q: I want to add ovals/filled circles/rotated rectangles to
my project. How much extra credit will that be worth?
A: Project 1 extra credit FAQ:
In terms of primitives, let's say:
- Defining a "good" rotated rectangle from three clicks (tricky, since
three points don't necessary define a rectangle, so you need to do a
little math) and drawing its edges will be three points.
- Drawing an unfilled parallelogram - which you can draw from three points
- will be one point of extra credit (you just need to generate one new
point and connect the points with your line routine)
- Filling rotated rectangles or parallelograms will be three points,
provided you use a Bresenham-like approach. Hint: you can use
Bresenham's line algorithm to walk along the edge of your rectangle
and draw a multiplication-free horizontal line at each row to make
this work. It's the same work to fill rectangles or parallelograms,
so you won't get six points for doing both.
- Filling circles will be three points, as long as you use a Bresenham-like
approach (again, you can combine Bresenham for circles with line-drawing
to make filled circles). You should still only need to run Bresenham
(i.e. compute decision variables) for one octant.
- Unfilled ovals will be five points for a Bresenham-like approach
(no points for a brute-force approach equivalent to the brute-
force circle approach we started with on the lecture slides). I think
this one will be quite tough; you'll have to re-derive the decision
variable equations. I don't recommend this one.
And let's put a maximum of 8 extra credit points for things on this list.
If you do any new primitives, make sure that by default the program works
just like the demo. If I want filled circles, for example, I should have
to press a button to go into "filled circles mode"; I should still get
unfilled circles in 'circle mode'.
Five points if you let the user define a clipping rectangle and implement
Cohen-Sutherland for lines. This sounds like a lot of work, but the code is
literally on the lecture slides (the actual C code), so this might not be too
bad.
All of these values assume that the extra credit works correctly in all
cases, etc. I.e., a broken implementation of circle-filling may not get
any extra credit.
Also a reminder that there's one point of extra credit on the line for the
best minipaint file, but make sure that you document any new .minipaint
files in your README, otherwise we may never see them.
Maximum 15 points total extra credit.
Make sure to document all extra credit in your README.