66 lines
1.7 KiB
C
66 lines
1.7 KiB
C
#include "include/render.h"
|
|
#include "include/gen.h"
|
|
#include "include/geom.h"
|
|
#include "include/util.h"
|
|
|
|
#include <raylib.h>
|
|
|
|
Vector2 PointToVector2(Pt p) {
|
|
Vector2 v;
|
|
v.x = (float)(p.x * 100) + 50.;
|
|
v.y = (float)(p.y * 100) + 50.;
|
|
return v;
|
|
}
|
|
|
|
Vector2 PointpToVector2(Pt* p) {
|
|
Vector2 v;
|
|
v.x = (float)(p->x * 100) + 50;
|
|
v.y = (float)(p->y * 100) + 50;
|
|
return v;
|
|
}
|
|
|
|
void draw_tri(Tri* tri) {
|
|
DrawTriangleLines(
|
|
PointToVector2(tri->a), PointToVector2(tri->b), PointToVector2(tri->c),
|
|
RED
|
|
);
|
|
}
|
|
|
|
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.x, tri->b.x, tri->c.x);
|
|
int miny = MIN3(tri->a.y, tri->b.y, tri->c.y);
|
|
for (int x = minx; x <= maxx; x++) {
|
|
for (int y = miny; y <= maxy; y++) {
|
|
if (tri_within((Pt){x, y}, tri)) {
|
|
// DrawCircleV(PointToVector2((Pt){x, y}), 4.f, col);
|
|
DrawLineV(
|
|
PointToVector2((Pt){x, y}), PointToVector2(tri_center(tri)),
|
|
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 * 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);
|
|
}
|
|
}
|