Added bounds checking for triangles.

This commit is contained in:
2025-12-20 10:33:12 -05:00
parent cffc64f3e9
commit 3bf2a7b429
10 changed files with 126 additions and 116 deletions

View File

@@ -1,5 +1,7 @@
#include "include/render.h"
#include "include/gen.h"
#include "include/geom.h"
#include "include/util.h"
#include <raylib.h>
#include <stdio.h>
@@ -18,27 +20,44 @@ Vector2 PointpToVector2(Pt* p) {
return v;
}
void render() {
for (int i = 0; i < NPLATES; i++) {
Plate plate = lith[i];
void draw_tri(Tri* tri) {
DrawTriangleLines(
PointToVector2(tri->a), PointToVector2(tri->b), PointToVector2(tri->c),
RED
);
}
DrawTriangleLines(
PointToVector2(plate.tris[0].a), PointToVector2(plate.tris[0].b),
PointToVector2(plate.tris[0].c), RED
);
printf(
">>>>>>>>>>>>>>>>>>%i %i\n", plate.tris[0].a.x, plate.tris[0].a.y
);
// bad.
void draw_tri_inside(Tri* tri, Color col) {
// int maxx = MAX3(tri->a.x, tri->b.x, tri->c.x);
// int maxy = MAX3(tri->a.y, tri->b.y, tri->c.y);
// int minx = MIN3(tri->a.y, tri->b.y, tri->c.y);
// int miny = MIN3(tri->a.y, tri->b.y, tri->c.y);
for (int x = 0; x <= WORLD_SZ; x++) {
for (int y = 0; y < WORLD_SZ; y++) {
if (tri_within((Pt){x, y}, tri)) {
DrawCircleV(PointToVector2((Pt){x, y}), 4.f, col);
}
}
}
}
void render() {
for (int x = 0; x < WORLD_SZ; x++) {
for (int y = 0; y < WORLD_SZ; y++) {
Vector2 v = PointToVector2((Pt){x, y});
DrawCircleV(v, 4.f, WHITE);
DrawLineV(
v, (Vector2){v.x + asth[x][y].x * 8, v.y + asth[x][y].y * 8},
v,
(Vector2){v.x + asth[x][y].x * WORLD_SZ,
v.y + asth[x][y].y * WORLD_SZ},
WHITE
);
}
}
for (int i = 0; i < NPLATES; i++) {
Plate plate = lith[i];
draw_tri(plate.tris);
draw_tri_inside(plate.tris, plate.col);
}
}