Added bounds checking for triangles.
This commit is contained in:
41
src/render.c
41
src/render.c
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user