Add quad drawing utilities
This commit is contained in:
26
src/window.c
26
src/window.c
@@ -122,15 +122,35 @@ void fill_triangle(const window_t *wnd, triangle_t triangle, colour_t colour) {
|
||||
|
||||
for (i32 y = min_y; y < max_y; ++y) {
|
||||
for (i32 x = min_x; x < max_x; ++x) {
|
||||
if (half_space(x2, x1, y2, y1, x, y) > 0 &&
|
||||
half_space(x3, x2, y3, y2, x, y) > 0 &&
|
||||
half_space(x1, x3, y1, y3, x, y) > 0) {
|
||||
if (half_space(x2, x1, y2, y1, x, y) >= 0 &&
|
||||
half_space(x3, x2, y3, y2, x, y) >= 0 &&
|
||||
half_space(x1, x3, y1, y3, x, y) >= 0) {
|
||||
draw_point(wnd, (point_t){x, y}, colour);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void draw_gquad(const window_t *wnd, gquad_t gquad, colour_t colour) {
|
||||
line_t l0 = (line_t){gquad.p0, gquad.p1};
|
||||
line_t l1 = (line_t){gquad.p1, gquad.p3};
|
||||
line_t l2 = (line_t){gquad.p3, gquad.p2};
|
||||
line_t l3 = (line_t){gquad.p2, gquad.p0};
|
||||
|
||||
draw_line(wnd, &l0, colour);
|
||||
draw_line(wnd, &l1, colour);
|
||||
draw_line(wnd, &l2, colour);
|
||||
draw_line(wnd, &l3, colour);
|
||||
}
|
||||
|
||||
void fill_gquad(const window_t *wnd, gquad_t gquad, colour_t colour) {
|
||||
triangle_t t0 = (triangle_t){gquad.p3, gquad.p1, gquad.p0};
|
||||
triangle_t t1 = (triangle_t){gquad.p0, gquad.p2, gquad.p3};
|
||||
|
||||
fill_triangle(wnd, t0, colour);
|
||||
fill_triangle(wnd, t1, colour);
|
||||
}
|
||||
|
||||
void draw_rect(const window_t *wnd, rect_t rect, colour_t colour) {
|
||||
set_colour(wnd, colour);
|
||||
|
||||
|
Reference in New Issue
Block a user