add 4th octant

This commit is contained in:
jonathan santis 2024-10-23 14:37:15 +02:00
parent f834d31d46
commit ae9afbc937

View File

@ -141,6 +141,7 @@ fn fillBuffer() !void {
_ = try bresenham(buffer, w, Point{ .x = 10, .y = 10, .z = 0 }, Point{ .x = 30, .y = 30, .z = 0 }); _ = try bresenham(buffer, w, Point{ .x = 10, .y = 10, .z = 0 }, Point{ .x = 30, .y = 30, .z = 0 });
_ = try bresenham(buffer, w, Point{ .x = 10, .y = 10, .z = 0 }, Point{ .x = 30, .y = 40, .z = 0 }); _ = try bresenham(buffer, w, Point{ .x = 10, .y = 10, .z = 0 }, Point{ .x = 30, .y = 40, .z = 0 });
_ = try bresenham(buffer, w, Point{ .x = 30, .y = 30, .z = 0 }, Point{ .x = 60, .y = 10, .z = 0 }); _ = try bresenham(buffer, w, Point{ .x = 30, .y = 30, .z = 0 }, Point{ .x = 60, .y = 10, .z = 0 });
_ = try bresenham(buffer, w, Point{ .x = 60, .y = 30, .z = 0 }, Point{ .x = 70, .y = 5, .z = 0 });
try file.writeAll(buffer); try file.writeAll(buffer);
} }
fn pixel(buffer: []u8, w: Winsize, x: i64, y: i64, symbol: u21) !void { fn pixel(buffer: []u8, w: Winsize, x: i64, y: i64, symbol: u21) !void {
@ -195,6 +196,16 @@ fn bresenham(buf: []u8, w: Winsize, p1: Point, p2: Point) !void {
er -= dx; er -= dx;
} }
} }
} else if (@abs(dy) > dx and dy < 0) {
while (y >= p2.y) : (y -= 1) {
print("[bresenham4]x:{},y:{},er:{},dx:{},dy:{}\n", .{ x, y, er, dx, dy });
_ = try pixel(buf, w, x, y, '4');
er += dx;
if (2 * er >= dy) {
x += 1;
er += dy;
}
}
} }
} }