basic z-buffering
This commit is contained in:
parent
315808a012
commit
438ac43ff5
44
cube.obj
44
cube.obj
|
@ -1,44 +0,0 @@
|
|||
# Blender v2.93.5 OBJ File: ''
|
||||
# www.blender.org
|
||||
o Cube
|
||||
v 1.000000 1.000000 -1.000000
|
||||
v 1.000000 -1.000000 -1.000000
|
||||
v 1.000000 1.000000 1.000000
|
||||
v 1.000000 -1.000000 1.000000
|
||||
v -1.000000 1.000000 -1.000000
|
||||
v -1.000000 -1.000000 -1.000000
|
||||
v -1.000000 1.000000 1.000000
|
||||
v -1.000000 -1.000000 1.000000
|
||||
vt 0.875000 0.500000
|
||||
vt 0.625000 0.750000
|
||||
vt 0.625000 0.500000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.625000 0.000000
|
||||
vt 0.375000 0.250000
|
||||
vt 0.375000 0.000000
|
||||
vt 0.375000 0.500000
|
||||
vt 0.125000 0.750000
|
||||
vt 0.125000 0.500000
|
||||
vt 0.625000 0.250000
|
||||
vt 0.875000 0.750000
|
||||
vt 0.625000 1.000000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
s off
|
||||
f 5/1/1 3/2/1 1/3/1
|
||||
f 3/2/2 8/4/2 4/5/2
|
||||
f 7/6/3 6/7/3 8/8/3
|
||||
f 2/9/4 8/10/4 6/11/4
|
||||
f 1/3/5 4/5/5 2/9/5
|
||||
f 5/12/6 2/9/6 6/7/6
|
||||
f 5/1/1 7/13/1 3/2/1
|
||||
f 3/2/2 7/14/2 8/4/2
|
||||
f 7/6/3 5/12/3 6/7/3
|
||||
f 2/9/4 4/5/4 8/10/4
|
||||
f 1/3/5 3/2/5 4/5/5
|
||||
f 5/12/6 1/3/6 2/9/6
|
264
main.c
264
main.c
|
@ -17,6 +17,15 @@
|
|||
#define H 600
|
||||
#define PI 3.14159265358979323844
|
||||
|
||||
int oddframe = 1;
|
||||
|
||||
typedef struct {
|
||||
int bit;
|
||||
int32_t value;
|
||||
} zval;
|
||||
|
||||
zval zbuffer[W*H] = {0};
|
||||
|
||||
int wireframe = 1;
|
||||
|
||||
void
|
||||
|
@ -39,14 +48,6 @@ typedef struct {
|
|||
rgb *canvas;
|
||||
} sdl_state;
|
||||
|
||||
typedef struct {
|
||||
vec2 a, b, c;
|
||||
} triangle2;
|
||||
|
||||
typedef struct {
|
||||
vec3 a, b, c;
|
||||
} triangle3;
|
||||
|
||||
typedef struct {
|
||||
uint32_t vertex_num;
|
||||
uint32_t tri_num; /* for loops */
|
||||
|
@ -55,8 +56,9 @@ typedef struct {
|
|||
uint32_t *indices;
|
||||
} mesh;
|
||||
|
||||
|
||||
camera
|
||||
new_camera(double znear, vec3 pos, vec3 up, double yaw, double pitch)
|
||||
new_camera(scalar znear, vec3 pos, vec3 up, scalar yaw, scalar pitch)
|
||||
{
|
||||
camera ret = {
|
||||
.znear = znear,
|
||||
|
@ -154,9 +156,9 @@ void free_mesh(mesh mesh) { free(mesh.vertices); free(mesh.indices); }
|
|||
#define clamp(x, min, max) (((x) >= (min)) ? ((x) <= (max)) ? (x) : (max) : (min))
|
||||
|
||||
void
|
||||
swapd(double *a, double *b)
|
||||
swapd(scalar *a, scalar *b)
|
||||
{
|
||||
double tmp = *a;
|
||||
scalar tmp = *a;
|
||||
*a = *b;
|
||||
*b = tmp;
|
||||
}
|
||||
|
@ -313,15 +315,44 @@ draw_line(rgb canvas[], rgb c, vec2 p0, vec2 p1)
|
|||
}
|
||||
|
||||
void
|
||||
draw_horizontal_line(rgb canvas[], rgb c, int32_t x0, int32_t x1, int32_t y)
|
||||
draw_horizontal_line(
|
||||
rgb canvas[],
|
||||
rgb c,
|
||||
int32_t x0,
|
||||
int32_t x1,
|
||||
int32_t z0,
|
||||
int32_t z1,
|
||||
int32_t y
|
||||
)
|
||||
{
|
||||
if (y < 0) return;
|
||||
if (x0 < 0) x0 = 0;
|
||||
if (x1 >= W) x1 = W - 1;
|
||||
if (y >= H) return;
|
||||
|
||||
for (int32_t x = x0; x <= x1; x++)
|
||||
canvas[x + y * W] = c;
|
||||
int32_t z = z0;
|
||||
int32_t dz = abs(z0 - z1);
|
||||
int32_t dx = abs(x0 - x1);
|
||||
int32_t z_change = z0 < z1 ? 1 : -1;
|
||||
int32_t eps = 0;
|
||||
|
||||
if (dx < 1) return;
|
||||
|
||||
for (int32_t x = x0; x <= x1; x++) {
|
||||
eps += dz;
|
||||
while (eps > 0) {
|
||||
eps -= dx;
|
||||
z += z_change;
|
||||
}
|
||||
|
||||
size_t i = x + y * W;
|
||||
|
||||
if (zbuffer[i].bit != oddframe || zbuffer[i].value < z) {
|
||||
canvas[i] = c;
|
||||
zbuffer[i].value = z;
|
||||
zbuffer[i].bit = oddframe;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -333,7 +364,7 @@ draw_triangle(rgb canvas[], rgb col, triangle2 tri)
|
|||
}
|
||||
|
||||
void
|
||||
fill_bottom_flat_triangle(rgb canvas[], rgb c, triangle2 tri)
|
||||
fill_bottom_flat_triangle(rgb canvas[], rgb c, triangle3 tri)
|
||||
{
|
||||
if (tri.b.x > tri.c.x)
|
||||
swapd(&tri.b.x, &tri.c.x);
|
||||
|
@ -349,7 +380,10 @@ fill_bottom_flat_triangle(rgb canvas[], rgb c, triangle2 tri)
|
|||
cx = (int32_t)tri.c.x,
|
||||
ay = (int32_t)tri.a.y,
|
||||
by = (int32_t)tri.b.y,
|
||||
cy = (int32_t)tri.c.y;
|
||||
cy = (int32_t)tri.c.y,
|
||||
az = (int32_t)tri.a.z,
|
||||
bz = (int32_t)tri.b.z,
|
||||
cz = (int32_t)tri.c.z;
|
||||
|
||||
assert(ay <= cy);
|
||||
assert(ay <= by);
|
||||
|
@ -358,34 +392,52 @@ fill_bottom_flat_triangle(rgb canvas[], rgb c, triangle2 tri)
|
|||
|
||||
int32_t dx_right = abs(cx - ax);
|
||||
int32_t dy_right = abs(cy - ay);
|
||||
int32_t dz_right = abs(cz - az);
|
||||
int32_t dx_left = abs(bx - ax);
|
||||
int32_t dy_left = abs(by - ay);
|
||||
int32_t dz_left = abs(bz - az);
|
||||
|
||||
int32_t eps_r = 0;
|
||||
int32_t eps_l = 0;
|
||||
int32_t eps_rx = 0;
|
||||
int32_t eps_lx = 0;
|
||||
int32_t eps_rz = 0;
|
||||
int32_t eps_lz = 0;
|
||||
int32_t xr = ax;
|
||||
int32_t xl = ax;
|
||||
int32_t zr = az;
|
||||
int32_t zl = az;
|
||||
|
||||
int32_t xr_change = ax < cx ? 1 : -1;
|
||||
int32_t xl_change = ax < bx ? 1 : -1;
|
||||
int32_t zr_change = az < cz ? 1 : -1;
|
||||
int32_t zl_change = az < bz ? 1 : -1;
|
||||
|
||||
for (int32_t y = ay; y < by; y++) {
|
||||
eps_r += dx_right;
|
||||
eps_l += dx_left;
|
||||
while (eps_r > 0) {
|
||||
eps_r -= dy_right;
|
||||
eps_rx += dx_right;
|
||||
eps_lx += dx_left;
|
||||
eps_rz += dz_right;
|
||||
eps_lz += dz_left;
|
||||
while (eps_rx > 0) {
|
||||
eps_rx -= dy_right;
|
||||
xr += xr_change;
|
||||
}
|
||||
while (eps_l > 0) {
|
||||
eps_l -= dy_left;
|
||||
while (eps_lx > 0) {
|
||||
eps_lx -= dy_left;
|
||||
xl += xl_change;
|
||||
}
|
||||
draw_horizontal_line(canvas, c, xl, xr, y);
|
||||
while (eps_rz > 0) {
|
||||
eps_rz -= dy_right;
|
||||
zr += zr_change;
|
||||
}
|
||||
while (eps_lz > 0) {
|
||||
eps_lz -= dy_left;
|
||||
zl += zl_change;
|
||||
}
|
||||
draw_horizontal_line(canvas, c, xl, xr, zl, zr, y);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
fill_top_flat_triangle(rgb canvas[], rgb c, triangle2 tri)
|
||||
fill_top_flat_triangle(rgb canvas[], rgb c, triangle3 tri)
|
||||
{
|
||||
if (tri.a.x > tri.b.x)
|
||||
swapd(&tri.a.x, &tri.b.x);
|
||||
|
@ -401,7 +453,10 @@ fill_top_flat_triangle(rgb canvas[], rgb c, triangle2 tri)
|
|||
cx = (int32_t)tri.c.x,
|
||||
ay = (int32_t)tri.a.y,
|
||||
by = (int32_t)tri.b.y,
|
||||
cy = (int32_t)tri.c.y;
|
||||
cy = (int32_t)tri.c.y,
|
||||
az = (int32_t)tri.a.z,
|
||||
bz = (int32_t)tri.b.z,
|
||||
cz = (int32_t)tri.c.z;
|
||||
|
||||
assert(cy >= ay);
|
||||
assert(cy >= by);
|
||||
|
@ -410,41 +465,59 @@ fill_top_flat_triangle(rgb canvas[], rgb c, triangle2 tri)
|
|||
|
||||
int32_t dx_right = abs(cx - bx);
|
||||
int32_t dy_right = abs(cy - by);
|
||||
int32_t dz_right = abs(cz - bz);
|
||||
int32_t dx_left = abs(cx - ax);
|
||||
int32_t dy_left = abs(cy - ay);
|
||||
int32_t dz_left = abs(cz - az);
|
||||
|
||||
int32_t eps_r = 0;
|
||||
int32_t eps_l = 0;
|
||||
int32_t eps_rx = 0;
|
||||
int32_t eps_lx = 0;
|
||||
int32_t eps_rz = 0;
|
||||
int32_t eps_lz = 0;
|
||||
int32_t xr = cx;
|
||||
int32_t xl = cx;
|
||||
int32_t zr = cz;
|
||||
int32_t zl = cz;
|
||||
|
||||
int32_t xr_change = cx < bx ? 1 : -1;
|
||||
int32_t xl_change = cx < ax ? 1 : -1;
|
||||
int32_t zr_change = cx < bz ? 1 : -1;
|
||||
int32_t zl_change = cx < az ? 1 : -1;
|
||||
|
||||
int32_t y;
|
||||
for (y = cy-1; y > by; y--) {
|
||||
eps_r += dx_right;
|
||||
eps_l += dx_left;
|
||||
while (eps_r > 0) {
|
||||
eps_r -= dy_right;
|
||||
eps_rx += dx_right;
|
||||
eps_lx += dx_left;
|
||||
eps_rz += dz_right;
|
||||
eps_lz += dz_left;
|
||||
while (eps_rx > 0) {
|
||||
eps_rx -= dy_right;
|
||||
xr += xr_change;
|
||||
}
|
||||
while (eps_l > 0) {
|
||||
eps_l -= dy_left;
|
||||
while (eps_lx > 0) {
|
||||
eps_lx -= dy_left;
|
||||
xl += xl_change;
|
||||
}
|
||||
draw_horizontal_line(canvas, c, xl, xr, y);
|
||||
while (eps_rz > 0) {
|
||||
eps_rz -= dy_right;
|
||||
zr += zr_change;
|
||||
}
|
||||
while (eps_lz > 0) {
|
||||
eps_lz -= dy_left;
|
||||
zl += zl_change;
|
||||
}
|
||||
draw_horizontal_line(canvas, c, xl, xr, zl, zr, y);
|
||||
}
|
||||
|
||||
/* We're missing one line, but setting the loop conditional to be y >= by
|
||||
* messes up the drawing.
|
||||
*/
|
||||
draw_horizontal_line(canvas, c, xl, xr, y);
|
||||
draw_horizontal_line(canvas, c, xl, xr, zl, zr, y);
|
||||
}
|
||||
|
||||
/* http://www.sunshine2k.de/coding/java/TriangleRasterization/TriangleRasterization.html */
|
||||
void
|
||||
fill_triangle(rgb canvas[], rgb c, triangle2 tri)
|
||||
fill_triangle(rgb canvas[], rgb c, triangle3 tri)
|
||||
{
|
||||
/* tri.a <= tri.b <= tri.c */
|
||||
if (tri.b.y < tri.a.y) {
|
||||
|
@ -468,19 +541,20 @@ fill_triangle(rgb canvas[], rgb c, triangle2 tri)
|
|||
fill_top_flat_triangle(canvas, c, tri);
|
||||
}
|
||||
else {
|
||||
vec2 trid = {
|
||||
vec3 trid = {
|
||||
(tri.a.x + (tri.b.y - tri.a.y) / (tri.c.y - tri.a.y) * (tri.c.x - tri.a.x)),
|
||||
tri.b.y};
|
||||
tri.b.y,
|
||||
tri.b.z};
|
||||
|
||||
if (tri.a.y > tri.b.y) {
|
||||
swapd(&tri.a.y, &tri.b.y);
|
||||
swapd(&tri.a.x, &tri.b.x);
|
||||
}
|
||||
|
||||
fill_top_flat_triangle(canvas, c, (triangle2) {
|
||||
fill_top_flat_triangle(canvas, c, (triangle3) {
|
||||
tri.b, trid, tri.c
|
||||
});
|
||||
fill_bottom_flat_triangle(canvas, c, (triangle2) {
|
||||
fill_bottom_flat_triangle(canvas, c, (triangle3) {
|
||||
tri.a, tri.b, trid
|
||||
});
|
||||
}
|
||||
|
@ -506,18 +580,22 @@ view_matricize(camera c, vec3 v)
|
|||
vec2
|
||||
project(camera c, vec3 u)
|
||||
{
|
||||
double r = c.znear / (u.z);
|
||||
scalar r = c.znear / (u.z);
|
||||
|
||||
return (vec2){(W / 2) * (u.x * r + 1), (H / 2) * (r * (-u.y) + 1) * (800.0 / 600.0)};
|
||||
}
|
||||
|
||||
triangle2
|
||||
project_triangle(camera c, triangle3 tri)
|
||||
triangle3
|
||||
project_triangle(camera cam, triangle3 tri)
|
||||
{
|
||||
return (triangle2) {
|
||||
.a = project(c, tri.a),
|
||||
.b = project(c, tri.b),
|
||||
.c = project(c, tri.c),
|
||||
vec2 a = project(cam, tri.a);
|
||||
vec2 b = project(cam, tri.b);
|
||||
vec2 c = project(cam, tri.c);
|
||||
|
||||
return (triangle3) {
|
||||
.a = (vec3){a.x,a.y,tri.a.z},
|
||||
.b = (vec3){b.x,b.y,tri.b.z},
|
||||
.c = (vec3){c.x,c.y,tri.c.z},
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -545,13 +623,13 @@ draw_mesh(rgb canvas[], rgb col, camera c, mesh mesh)
|
|||
{
|
||||
for (uint32_t i = 0; i < mesh.tri_num; i++) {
|
||||
vec3 v0 = mesh.vertices[mesh.indices[3*i ]],
|
||||
v1 = mesh.vertices[mesh.indices[3*i+1]],
|
||||
v2 = mesh.vertices[mesh.indices[3*i+2]];
|
||||
v1 = mesh.vertices[mesh.indices[3*i+1]],
|
||||
v2 = mesh.vertices[mesh.indices[3*i+2]];
|
||||
|
||||
vec3 norm = vec3_normalize(
|
||||
vec3_cross(vec3_sub(v1, v0), vec3_sub(v2, v0))
|
||||
);
|
||||
double x = vec3_dot(vec3_sub(v0, c.pos), norm);
|
||||
scalar x = vec3_dot(vec3_sub(v0, c.pos), norm);
|
||||
|
||||
vec3 us[3] = {view_matricize(c, v0), view_matricize(c, v1), view_matricize(c, v2)};
|
||||
int skip_triangle = 0;
|
||||
|
@ -562,27 +640,22 @@ draw_mesh(rgb canvas[], rgb col, camera c, mesh mesh)
|
|||
|
||||
if (!skip_triangle) {
|
||||
if (wireframe) {
|
||||
if (x < 0)
|
||||
draw_triangle(canvas, col, project_triangle(c, (triangle3) {
|
||||
us[0], us[1], us[2]
|
||||
}));
|
||||
/* else */
|
||||
/* draw_triangle(canvas, */
|
||||
/* (rgb) { */
|
||||
/* .r = col.r * 0.2, */
|
||||
/* .g = col.g * 0.2, */
|
||||
/* .b = col.b * 0.2, */
|
||||
/* .a = col.a */
|
||||
/* }, */
|
||||
/* project_triangle(c, (triangle3) { */
|
||||
/* v0, v1, v2 */
|
||||
/* })); */
|
||||
if (x < 0) {
|
||||
triangle3 projected = project_triangle(c, (triangle3) {
|
||||
us[0], us[1], us[2]
|
||||
});
|
||||
draw_triangle(canvas, col, (triangle2){
|
||||
(vec2){projected.a.x,projected.a.y},
|
||||
(vec2){projected.b.x,projected.b.y},
|
||||
(vec2){projected.c.x,projected.c.y}});
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (x < 0) {
|
||||
double col_mod = clamp(
|
||||
scalar col_mod = clamp(
|
||||
vec3_dot(norm, vec3_normalize((vec3){2,2,2})),
|
||||
0.0, 1.0);
|
||||
0.0, 1.0
|
||||
);
|
||||
fill_triangle(canvas,
|
||||
(rgb) {
|
||||
.r = col.r * col_mod,
|
||||
|
@ -598,14 +671,14 @@ draw_mesh(rgb canvas[], rgb col, camera c, mesh mesh)
|
|||
}
|
||||
}
|
||||
|
||||
double
|
||||
to_deg(double deg)
|
||||
scalar
|
||||
to_deg(scalar deg)
|
||||
{
|
||||
return deg * 2 * PI / 360.0;
|
||||
}
|
||||
|
||||
mat3x3
|
||||
x_rotation(double deg)
|
||||
x_rotation(scalar deg)
|
||||
{
|
||||
return (mat3x3) {
|
||||
.nums =
|
||||
|
@ -616,7 +689,7 @@ x_rotation(double deg)
|
|||
}
|
||||
|
||||
mat3x3
|
||||
y_rotation(double deg)
|
||||
y_rotation(scalar deg)
|
||||
{
|
||||
return (mat3x3) {
|
||||
.nums =
|
||||
|
@ -627,7 +700,7 @@ y_rotation(double deg)
|
|||
}
|
||||
|
||||
mat3x3
|
||||
z_rotation(double deg)
|
||||
z_rotation(scalar deg)
|
||||
{
|
||||
return (mat3x3) {
|
||||
.nums =
|
||||
|
@ -637,27 +710,28 @@ z_rotation(double deg)
|
|||
};
|
||||
}
|
||||
|
||||
#include "other.h"
|
||||
/* #include "other.h" */
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
sdl_state state = init_sdl();
|
||||
camera cam = new_camera(-1.0, (vec3){0, 1, 30}, UP, PI/2, 0.0);
|
||||
print_camera(cam);
|
||||
camera cam = new_camera(-1.0, (vec3){0, 1, 30}, UP, PI, 0.0);
|
||||
|
||||
SDL_Event event;
|
||||
|
||||
const mesh iso = load_mesh("iso.mod");
|
||||
mesh iso_copy = copy_mesh(iso);
|
||||
const mesh plane = load_mesh("plane.mod");
|
||||
mesh plane_copy = copy_mesh(plane);
|
||||
/* const mesh iso = load_mesh("resources/iso.mod"); */
|
||||
/* mesh iso_copy = copy_mesh(iso); */
|
||||
/* const mesh plane = load_mesh("resources/plane.mod"); */
|
||||
/* mesh plane_copy = copy_mesh(plane); */
|
||||
const mesh monkey = load_mesh("resources/monkey.mod");
|
||||
mesh monkey_copy = copy_mesh(monkey);
|
||||
|
||||
uint64_t t = 0;
|
||||
|
||||
double rot_speed = 0.6;
|
||||
scalar rot_speed = 0.6;
|
||||
for (;;) {
|
||||
double elapsed, start = SDL_GetPerformanceCounter();
|
||||
scalar elapsed, start = SDL_GetPerformanceCounter();
|
||||
|
||||
mat3x3 rotation = mat3x3_mul(
|
||||
mat3x3_mul(
|
||||
|
@ -667,18 +741,19 @@ main(void)
|
|||
|
||||
clear_canvas(state.canvas, (rgb){7, 7, 7, 255});
|
||||
|
||||
for (size_t i = 0; i < iso.vertex_num; i++) {
|
||||
iso_copy.vertices[i] = vec3_mat3x3_mul(iso.vertices[i], rotation);
|
||||
}
|
||||
/* for (size_t i = 0; i < iso.vertex_num; i++) { */
|
||||
/* iso_copy.vertices[i] = vec3_mat3x3_mul(iso.vertices[i], rotation); */
|
||||
/* } */
|
||||
|
||||
draw_mesh(state.canvas, WHITE, cam, plane_copy);
|
||||
draw_mesh(state.canvas, WHITE, cam, iso_copy);
|
||||
/* draw_mesh(state.canvas, WHITE, cam, plane_copy); */
|
||||
/* draw_mesh(state.canvas, WHITE, cam, iso_copy); */
|
||||
draw_mesh(state.canvas, WHITE, cam, monkey_copy);
|
||||
|
||||
render(state);
|
||||
|
||||
/* continuous keyboard events */
|
||||
const uint8_t *keyboard = SDL_GetKeyboardState(NULL);
|
||||
double velocity = 0.1;
|
||||
scalar velocity = 0.1;
|
||||
if (keyboard[SDL_SCANCODE_W]) {
|
||||
cam.pos = vec3_sub(cam.pos, vec3_scalar_mul(cam.front, velocity));
|
||||
}
|
||||
|
@ -722,12 +797,15 @@ main(void)
|
|||
SDL_Delay(clamp(16.666f - elapsed, 0, 1000));
|
||||
|
||||
t++;
|
||||
oddframe = !oddframe;
|
||||
}
|
||||
|
||||
quit:
|
||||
free_mesh(iso);
|
||||
free_mesh(iso_copy);
|
||||
free_mesh(plane);
|
||||
free_mesh(plane_copy);
|
||||
/* free_mesh(iso); */
|
||||
/* free_mesh(iso_copy); */
|
||||
/* free_mesh(plane); */
|
||||
/* free_mesh(plane_copy); */
|
||||
free_mesh(monkey);
|
||||
free_mesh(monkey_copy);
|
||||
free_sdl(state);
|
||||
}
|
||||
|
|
|
@ -1,48 +1,48 @@
|
|||
# Blender v2.93.5 OBJ File: ''
|
||||
# www.blender.org
|
||||
o Icosphere_Icosphere.001
|
||||
v 0.000000 -1.000000 0.000000
|
||||
v 0.723607 -0.447220 0.525725
|
||||
v -0.276388 -0.447220 0.850649
|
||||
v -0.894426 -0.447216 0.000000
|
||||
v -0.276388 -0.447220 -0.850649
|
||||
v 0.723607 -0.447220 -0.525725
|
||||
v 0.276388 0.447220 0.850649
|
||||
v -0.723607 0.447220 0.525725
|
||||
v -0.723607 0.447220 -0.525725
|
||||
v 0.276388 0.447220 -0.850649
|
||||
v 0.894426 0.447216 0.000000
|
||||
o Icosphere_Icosphere.002
|
||||
v 0.000000 1.000000 0.000000
|
||||
v -0.162456 -0.850654 0.499995
|
||||
v 0.425323 -0.850654 0.309011
|
||||
v 0.262869 -0.525738 0.809012
|
||||
v 0.850648 -0.525736 0.000000
|
||||
v 0.425323 -0.850654 -0.309011
|
||||
v -0.525730 -0.850652 0.000000
|
||||
v -0.688189 -0.525736 0.499997
|
||||
v -0.162456 -0.850654 -0.499995
|
||||
v -0.688189 -0.525736 -0.499997
|
||||
v 0.262869 -0.525738 -0.809012
|
||||
v 0.951058 0.000000 0.309013
|
||||
v 0.951058 0.000000 -0.309013
|
||||
v 0.000000 0.000000 1.000000
|
||||
v 0.587786 0.000000 0.809017
|
||||
v -0.951058 0.000000 0.309013
|
||||
v -0.587786 0.000000 0.809017
|
||||
v -0.587786 0.000000 -0.809017
|
||||
v -0.951058 0.000000 -0.309013
|
||||
v 0.587786 0.000000 -0.809017
|
||||
v 0.000000 0.000000 -1.000000
|
||||
v 0.688189 0.525736 0.499997
|
||||
v -0.262869 0.525738 0.809012
|
||||
v -0.850648 0.525736 0.000000
|
||||
v -0.262869 0.525738 -0.809012
|
||||
v 0.688189 0.525736 -0.499997
|
||||
v 0.162456 0.850654 0.499995
|
||||
v 0.525730 0.850652 0.000000
|
||||
v -0.425323 0.850654 0.309011
|
||||
v -0.425323 0.850654 -0.309011
|
||||
v 0.162456 0.850654 -0.499995
|
||||
v 0.723607 1.552781 0.525725
|
||||
v -0.276388 1.552780 0.850649
|
||||
v -0.894426 1.552784 0.000000
|
||||
v -0.276388 1.552780 -0.850649
|
||||
v 0.723607 1.552781 -0.525725
|
||||
v 0.276388 2.447220 0.850649
|
||||
v -0.723607 2.447220 0.525725
|
||||
v -0.723607 2.447220 -0.525725
|
||||
v 0.276388 2.447220 -0.850649
|
||||
v 0.894426 2.447216 0.000000
|
||||
v 0.000000 3.000000 0.000000
|
||||
v -0.162456 1.149346 0.499995
|
||||
v 0.425323 1.149346 0.309011
|
||||
v 0.262869 1.474262 0.809012
|
||||
v 0.850648 1.474264 0.000000
|
||||
v 0.425323 1.149346 -0.309011
|
||||
v -0.525730 1.149348 0.000000
|
||||
v -0.688189 1.474264 0.499997
|
||||
v -0.162456 1.149346 -0.499995
|
||||
v -0.688189 1.474264 -0.499997
|
||||
v 0.262869 1.474262 -0.809012
|
||||
v 0.951058 2.000000 0.309013
|
||||
v 0.951058 2.000000 -0.309013
|
||||
v 0.000000 2.000000 1.000000
|
||||
v 0.587786 2.000000 0.809017
|
||||
v -0.951058 2.000000 0.309013
|
||||
v -0.587786 2.000000 0.809017
|
||||
v -0.587786 2.000000 -0.809017
|
||||
v -0.951058 2.000000 -0.309013
|
||||
v 0.587786 2.000000 -0.809017
|
||||
v 0.000000 2.000000 -1.000000
|
||||
v 0.688189 2.525736 0.499997
|
||||
v -0.262869 2.525738 0.809012
|
||||
v -0.850648 2.525736 0.000000
|
||||
v -0.262869 2.525738 -0.809012
|
||||
v 0.688189 2.525736 -0.499997
|
||||
v 0.162456 2.850654 0.499995
|
||||
v 0.525730 2.850652 0.000000
|
||||
v -0.425323 2.850654 0.309011
|
||||
v -0.425323 2.850654 -0.309011
|
||||
v 0.162456 2.850654 -0.499995
|
||||
vt 0.181819 0.000000
|
||||
vt 0.227273 0.078731
|
||||
vt 0.136365 0.078731
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,815 @@
|
|||
# Blender v2.93.5 OBJ File: ''
|
||||
# www.blender.org
|
||||
o Plane
|
||||
v -15.000000 -0.000001 17.000000
|
||||
v -17.000000 -0.000001 15.000000
|
||||
v -17.000000 -0.000001 17.000000
|
||||
v -11.000000 -0.000001 17.000000
|
||||
v -13.000000 -0.000001 15.000000
|
||||
v -13.000000 -0.000001 17.000000
|
||||
v -7.000000 -0.000001 17.000000
|
||||
v -9.000000 -0.000001 15.000000
|
||||
v -9.000000 -0.000001 17.000000
|
||||
v -3.000000 -0.000001 17.000000
|
||||
v -5.000000 -0.000001 15.000000
|
||||
v -5.000000 -0.000001 17.000000
|
||||
v 1.000000 -0.000001 17.000000
|
||||
v -1.000000 -0.000001 15.000000
|
||||
v -1.000000 -0.000001 17.000000
|
||||
v 5.000000 -0.000001 17.000000
|
||||
v 3.000000 -0.000001 15.000000
|
||||
v 3.000000 -0.000001 17.000000
|
||||
v 9.000000 -0.000001 17.000000
|
||||
v 7.000000 -0.000001 15.000000
|
||||
v 7.000000 -0.000001 17.000000
|
||||
v 13.000000 -0.000001 17.000000
|
||||
v 11.000000 -0.000001 15.000000
|
||||
v 11.000000 -0.000001 17.000000
|
||||
v 17.000000 -0.000001 17.000000
|
||||
v 15.000000 -0.000001 15.000000
|
||||
v 15.000000 -0.000001 17.000000
|
||||
v -15.000000 -0.000001 13.000000
|
||||
v -17.000000 -0.000000 11.000000
|
||||
v -17.000000 -0.000001 13.000000
|
||||
v -11.000000 -0.000001 13.000000
|
||||
v -13.000000 -0.000000 11.000000
|
||||
v -13.000000 -0.000001 13.000000
|
||||
v -7.000000 -0.000001 13.000000
|
||||
v -9.000000 -0.000000 11.000000
|
||||
v -9.000000 -0.000001 13.000000
|
||||
v -3.000000 -0.000001 13.000000
|
||||
v -5.000000 -0.000000 11.000000
|
||||
v -5.000000 -0.000001 13.000000
|
||||
v 1.000000 -0.000001 13.000000
|
||||
v -1.000000 -0.000000 11.000000
|
||||
v -1.000000 -0.000001 13.000000
|
||||
v 5.000000 -0.000001 13.000000
|
||||
v 3.000000 -0.000000 11.000000
|
||||
v 3.000000 -0.000001 13.000000
|
||||
v 9.000000 -0.000001 13.000000
|
||||
v 7.000000 -0.000000 11.000000
|
||||
v 7.000000 -0.000001 13.000000
|
||||
v 13.000000 -0.000001 13.000000
|
||||
v 11.000000 -0.000000 11.000000
|
||||
v 11.000000 -0.000001 13.000000
|
||||
v 17.000000 -0.000001 13.000000
|
||||
v 15.000000 -0.000000 11.000000
|
||||
v 15.000000 -0.000001 13.000000
|
||||
v -15.000000 -0.000000 9.000000
|
||||
v -17.000000 -0.000000 7.000000
|
||||
v -17.000000 -0.000000 9.000000
|
||||
v -11.000000 -0.000000 9.000000
|
||||
v -13.000000 -0.000000 7.000000
|
||||
v -13.000000 -0.000000 9.000000
|
||||
v -7.000000 -0.000000 9.000000
|
||||
v -9.000000 -0.000000 7.000000
|
||||
v -9.000000 -0.000000 9.000000
|
||||
v -3.000000 -0.000000 9.000000
|
||||
v -5.000000 -0.000000 7.000000
|
||||
v -5.000000 -0.000000 9.000000
|
||||
v 1.000000 -0.000000 9.000000
|
||||
v -1.000000 -0.000000 7.000000
|
||||
v -1.000000 -0.000000 9.000000
|
||||
v 5.000000 -0.000000 9.000000
|
||||
v 3.000000 -0.000000 7.000000
|
||||
v 3.000000 -0.000000 9.000000
|
||||
v 9.000000 -0.000000 9.000000
|
||||
v 7.000000 -0.000000 7.000000
|
||||
v 7.000000 -0.000000 9.000000
|
||||
v 13.000000 -0.000000 9.000000
|
||||
v 11.000000 -0.000000 7.000000
|
||||
v 11.000000 -0.000000 9.000000
|
||||
v 17.000000 -0.000000 9.000000
|
||||
v 15.000000 -0.000000 7.000000
|
||||
v 15.000000 -0.000000 9.000000
|
||||
v -15.000000 -0.000000 5.000000
|
||||
v -17.000000 -0.000000 3.000000
|
||||
v -17.000000 -0.000000 5.000000
|
||||
v -11.000000 -0.000000 5.000000
|
||||
v -13.000000 -0.000000 3.000000
|
||||
v -13.000000 -0.000000 5.000000
|
||||
v -7.000000 -0.000000 5.000000
|
||||
v -9.000000 -0.000000 3.000000
|
||||
v -9.000000 -0.000000 5.000000
|
||||
v -3.000000 -0.000000 5.000000
|
||||
v -5.000000 -0.000000 3.000000
|
||||
v -5.000000 -0.000000 5.000000
|
||||
v 1.000000 -0.000000 5.000000
|
||||
v -1.000000 -0.000000 3.000000
|
||||
v -1.000000 -0.000000 5.000000
|
||||
v 5.000000 -0.000000 5.000000
|
||||
v 3.000000 -0.000000 3.000000
|
||||
v 3.000000 -0.000000 5.000000
|
||||
v 9.000000 -0.000000 5.000000
|
||||
v 7.000000 -0.000000 3.000000
|
||||
v 7.000000 -0.000000 5.000000
|
||||
v 13.000000 -0.000000 5.000000
|
||||
v 11.000000 -0.000000 3.000000
|
||||
v 11.000000 -0.000000 5.000000
|
||||
v 17.000000 -0.000000 5.000000
|
||||
v 15.000000 -0.000000 3.000000
|
||||
v 15.000000 -0.000000 5.000000
|
||||
v -15.000000 -0.000000 1.000000
|
||||
v -17.000000 0.000000 -1.000000
|
||||
v -17.000000 -0.000000 1.000000
|
||||
v -11.000000 -0.000000 1.000000
|
||||
v -13.000000 0.000000 -1.000000
|
||||
v -13.000000 -0.000000 1.000000
|
||||
v -7.000000 -0.000000 1.000000
|
||||
v -9.000000 0.000000 -1.000000
|
||||
v -9.000000 -0.000000 1.000000
|
||||
v -3.000000 -0.000000 1.000000
|
||||
v -5.000000 0.000000 -1.000000
|
||||
v -5.000000 -0.000000 1.000000
|
||||
v 1.000000 -0.000000 1.000000
|
||||
v -1.000000 0.000000 -1.000000
|
||||
v -1.000000 -0.000000 1.000000
|
||||
v 5.000000 -0.000000 1.000000
|
||||
v 3.000000 0.000000 -1.000000
|
||||
v 3.000000 -0.000000 1.000000
|
||||
v 9.000000 -0.000000 1.000000
|
||||
v 7.000000 0.000000 -1.000000
|
||||
v 7.000000 -0.000000 1.000000
|
||||
v 13.000000 -0.000000 1.000000
|
||||
v 11.000000 0.000000 -1.000000
|
||||
v 11.000000 -0.000000 1.000000
|
||||
v 17.000000 -0.000000 1.000000
|
||||
v 15.000000 0.000000 -1.000000
|
||||
v 15.000000 -0.000000 1.000000
|
||||
v -15.000000 0.000000 -3.000000
|
||||
v -17.000000 0.000000 -5.000000
|
||||
v -17.000000 0.000000 -3.000000
|
||||
v -11.000000 0.000000 -3.000000
|
||||
v -13.000000 0.000000 -5.000000
|
||||
v -13.000000 0.000000 -3.000000
|
||||
v -7.000000 0.000000 -3.000000
|
||||
v -9.000000 0.000000 -5.000000
|
||||
v -9.000000 0.000000 -3.000000
|
||||
v -3.000000 0.000000 -3.000000
|
||||
v -5.000000 0.000000 -5.000000
|
||||
v -5.000000 0.000000 -3.000000
|
||||
v 1.000000 0.000000 -3.000000
|
||||
v -1.000000 0.000000 -5.000000
|
||||
v -1.000000 0.000000 -3.000000
|
||||
v 5.000000 0.000000 -3.000000
|
||||
v 3.000000 0.000000 -5.000000
|
||||
v 3.000000 0.000000 -3.000000
|
||||
v 9.000000 0.000000 -3.000000
|
||||
v 7.000000 0.000000 -5.000000
|
||||
v 7.000000 0.000000 -3.000000
|
||||
v 13.000000 0.000000 -3.000000
|
||||
v 11.000000 0.000000 -5.000000
|
||||
v 11.000000 0.000000 -3.000000
|
||||
v 17.000000 0.000000 -3.000000
|
||||
v 15.000000 0.000000 -5.000000
|
||||
v 15.000000 0.000000 -3.000000
|
||||
v -15.000000 0.000000 -7.000000
|
||||
v -17.000000 0.000000 -9.000000
|
||||
v -17.000000 0.000000 -7.000000
|
||||
v -11.000000 0.000000 -7.000000
|
||||
v -13.000000 0.000000 -9.000000
|
||||
v -13.000000 0.000000 -7.000000
|
||||
v -7.000000 0.000000 -7.000000
|
||||
v -9.000000 0.000000 -9.000000
|
||||
v -9.000000 0.000000 -7.000000
|
||||
v -3.000000 0.000000 -7.000000
|
||||
v -5.000000 0.000000 -9.000000
|
||||
v -5.000000 0.000000 -7.000000
|
||||
v 1.000000 0.000000 -7.000000
|
||||
v -1.000000 0.000000 -9.000000
|
||||
v -1.000000 0.000000 -7.000000
|
||||
v 5.000000 0.000000 -7.000000
|
||||
v 3.000000 0.000000 -9.000000
|
||||
v 3.000000 0.000000 -7.000000
|
||||
v 9.000000 0.000000 -7.000000
|
||||
v 7.000000 0.000000 -9.000000
|
||||
v 7.000000 0.000000 -7.000000
|
||||
v 13.000000 0.000000 -7.000000
|
||||
v 11.000000 0.000000 -9.000000
|
||||
v 11.000000 0.000000 -7.000000
|
||||
v 17.000000 0.000000 -7.000000
|
||||
v 15.000000 0.000000 -9.000000
|
||||
v 15.000000 0.000000 -7.000000
|
||||
v -15.000000 0.000000 -11.000000
|
||||
v -17.000000 0.000001 -13.000000
|
||||
v -17.000000 0.000000 -11.000000
|
||||
v -11.000000 0.000000 -11.000000
|
||||
v -13.000000 0.000001 -13.000000
|
||||
v -13.000000 0.000000 -11.000000
|
||||
v -7.000000 0.000000 -11.000000
|
||||
v -9.000000 0.000001 -13.000000
|
||||
v -9.000000 0.000000 -11.000000
|
||||
v -3.000000 0.000000 -11.000000
|
||||
v -5.000000 0.000001 -13.000000
|
||||
v -5.000000 0.000000 -11.000000
|
||||
v 1.000000 0.000000 -11.000000
|
||||
v -1.000000 0.000001 -13.000000
|
||||
v -1.000000 0.000000 -11.000000
|
||||
v 5.000000 0.000000 -11.000000
|
||||
v 3.000000 0.000001 -13.000000
|
||||
v 3.000000 0.000000 -11.000000
|
||||
v 9.000000 0.000000 -11.000000
|
||||
v 7.000000 0.000001 -13.000000
|
||||
v 7.000000 0.000000 -11.000000
|
||||
v 13.000000 0.000000 -11.000000
|
||||
v 11.000000 0.000001 -13.000000
|
||||
v 11.000000 0.000000 -11.000000
|
||||
v 17.000000 0.000000 -11.000000
|
||||
v 15.000000 0.000001 -13.000000
|
||||
v 15.000000 0.000000 -11.000000
|
||||
v -15.000000 0.000001 -15.000000
|
||||
v -17.000000 0.000001 -17.000000
|
||||
v -17.000000 0.000001 -15.000000
|
||||
v -11.000000 0.000001 -15.000000
|
||||
v -13.000000 0.000001 -17.000000
|
||||
v -13.000000 0.000001 -15.000000
|
||||
v -7.000000 0.000001 -15.000000
|
||||
v -9.000000 0.000001 -17.000000
|
||||
v -9.000000 0.000001 -15.000000
|
||||
v -3.000000 0.000001 -15.000000
|
||||
v -5.000000 0.000001 -17.000000
|
||||
v -5.000000 0.000001 -15.000000
|
||||
v 1.000000 0.000001 -15.000000
|
||||
v -1.000000 0.000001 -17.000000
|
||||
v -1.000000 0.000001 -15.000000
|
||||
v 5.000000 0.000001 -15.000000
|
||||
v 3.000000 0.000001 -17.000000
|
||||
v 3.000000 0.000001 -15.000000
|
||||
v 9.000000 0.000001 -15.000000
|
||||
v 7.000000 0.000001 -17.000000
|
||||
v 7.000000 0.000001 -15.000000
|
||||
v 13.000000 0.000001 -15.000000
|
||||
v 11.000000 0.000001 -17.000000
|
||||
v 11.000000 0.000001 -15.000000
|
||||
v 17.000000 0.000001 -15.000000
|
||||
v 15.000000 0.000001 -17.000000
|
||||
v 15.000000 0.000001 -15.000000
|
||||
v -15.000000 -0.000001 15.000000
|
||||
v -11.000000 -0.000001 15.000000
|
||||
v -7.000000 -0.000001 15.000000
|
||||
v -3.000000 -0.000001 15.000000
|
||||
v 1.000000 -0.000001 15.000000
|
||||
v 5.000000 -0.000001 15.000000
|
||||
v 9.000000 -0.000001 15.000000
|
||||
v 13.000000 -0.000001 15.000000
|
||||
v 17.000000 -0.000001 15.000000
|
||||
v -15.000000 -0.000000 11.000000
|
||||
v -11.000000 -0.000000 11.000000
|
||||
v -7.000000 -0.000000 11.000000
|
||||
v -3.000000 -0.000000 11.000000
|
||||
v 1.000000 -0.000000 11.000000
|
||||
v 5.000000 -0.000000 11.000000
|
||||
v 9.000000 -0.000000 11.000000
|
||||
v 13.000000 -0.000000 11.000000
|
||||
v 17.000000 -0.000000 11.000000
|
||||
v -15.000000 -0.000000 7.000000
|
||||
v -11.000000 -0.000000 7.000000
|
||||
v -7.000000 -0.000000 7.000000
|
||||
v -3.000000 -0.000000 7.000000
|
||||
v 1.000000 -0.000000 7.000000
|
||||
v 5.000000 -0.000000 7.000000
|
||||
v 9.000000 -0.000000 7.000000
|
||||
v 13.000000 -0.000000 7.000000
|
||||
v 17.000000 -0.000000 7.000000
|
||||
v -15.000000 -0.000000 3.000000
|
||||
v -11.000000 -0.000000 3.000000
|
||||
v -7.000000 -0.000000 3.000000
|
||||
v -3.000000 -0.000000 3.000000
|
||||
v 1.000000 -0.000000 3.000000
|
||||
v 5.000000 -0.000000 3.000000
|
||||
v 9.000000 -0.000000 3.000000
|
||||
v 13.000000 -0.000000 3.000000
|
||||
v 17.000000 -0.000000 3.000000
|
||||
v -15.000000 0.000000 -1.000000
|
||||
v -11.000000 0.000000 -1.000000
|
||||
v -7.000000 0.000000 -1.000000
|
||||
v -3.000000 0.000000 -1.000000
|
||||
v 1.000000 0.000000 -1.000000
|
||||
v 5.000000 0.000000 -1.000000
|
||||
v 9.000000 0.000000 -1.000000
|
||||
v 13.000000 0.000000 -1.000000
|
||||
v 17.000000 0.000000 -1.000000
|
||||
v -15.000000 0.000000 -5.000000
|
||||
v -11.000000 0.000000 -5.000000
|
||||
v -7.000000 0.000000 -5.000000
|
||||
v -3.000000 0.000000 -5.000000
|
||||
v 1.000000 0.000000 -5.000000
|
||||
v 5.000000 0.000000 -5.000000
|
||||
v 9.000000 0.000000 -5.000000
|
||||
v 13.000000 0.000000 -5.000000
|
||||
v 17.000000 0.000000 -5.000000
|
||||
v -15.000000 0.000000 -9.000000
|
||||
v -11.000000 0.000000 -9.000000
|
||||
v -7.000000 0.000000 -9.000000
|
||||
v -3.000000 0.000000 -9.000000
|
||||
v 1.000000 0.000000 -9.000000
|
||||
v 5.000000 0.000000 -9.000000
|
||||
v 9.000000 0.000000 -9.000000
|
||||
v 13.000000 0.000000 -9.000000
|
||||
v 17.000000 0.000000 -9.000000
|
||||
v -15.000000 0.000001 -13.000000
|
||||
v -11.000000 0.000001 -13.000000
|
||||
v -7.000000 0.000001 -13.000000
|
||||
v -3.000000 0.000001 -13.000000
|
||||
v 1.000000 0.000001 -13.000000
|
||||
v 5.000000 0.000001 -13.000000
|
||||
v 9.000000 0.000001 -13.000000
|
||||
v 13.000000 0.000001 -13.000000
|
||||
v 17.000000 0.000001 -13.000000
|
||||
v -15.000000 0.000001 -17.000000
|
||||
v -11.000000 0.000001 -17.000000
|
||||
v -7.000000 0.000001 -17.000000
|
||||
v -3.000000 0.000001 -17.000000
|
||||
v 1.000000 0.000001 -17.000000
|
||||
v 5.000000 0.000001 -17.000000
|
||||
v 9.000000 0.000001 -17.000000
|
||||
v 13.000000 0.000001 -17.000000
|
||||
v 17.000000 0.000001 -17.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1
|
||||
f 4/4/1 5/5/1 6/6/1
|
||||
f 7/7/1 8/8/1 9/9/1
|
||||
f 10/10/1 11/11/1 12/12/1
|
||||
f 13/13/1 14/14/1 15/15/1
|
||||
f 16/16/1 17/17/1 18/18/1
|
||||
f 19/19/1 20/20/1 21/21/1
|
||||
f 22/22/1 23/23/1 24/24/1
|
||||
f 25/25/1 26/26/1 27/27/1
|
||||
f 28/28/1 29/29/1 30/30/1
|
||||
f 31/31/1 32/32/1 33/33/1
|
||||
f 34/34/1 35/35/1 36/36/1
|
||||
f 37/37/1 38/38/1 39/39/1
|
||||
f 40/40/1 41/41/1 42/42/1
|
||||
f 43/43/1 44/44/1 45/45/1
|
||||
f 46/46/1 47/47/1 48/48/1
|
||||
f 49/49/1 50/50/1 51/51/1
|
||||
f 52/52/1 53/53/1 54/54/1
|
||||
f 55/55/1 56/56/1 57/57/1
|
||||
f 58/58/1 59/59/1 60/60/1
|
||||
f 61/61/1 62/62/1 63/63/1
|
||||
f 64/64/1 65/65/1 66/66/1
|
||||
f 67/67/1 68/68/1 69/69/1
|
||||
f 70/70/1 71/71/1 72/72/1
|
||||
f 73/73/1 74/74/1 75/75/1
|
||||
f 76/76/1 77/77/1 78/78/1
|
||||
f 79/79/1 80/80/1 81/81/1
|
||||
f 82/82/1 83/83/1 84/84/1
|
||||
f 85/85/1 86/86/1 87/87/1
|
||||
f 88/88/1 89/89/1 90/90/1
|
||||
f 91/91/1 92/92/1 93/93/1
|
||||
f 94/94/1 95/95/1 96/96/1
|
||||
f 97/97/1 98/98/1 99/99/1
|
||||
f 100/100/1 101/101/1 102/102/1
|
||||
f 103/103/1 104/104/1 105/105/1
|
||||
f 106/106/1 107/107/1 108/108/1
|
||||
f 109/109/1 110/110/1 111/111/1
|
||||
f 112/112/1 113/113/1 114/114/1
|
||||
f 115/115/1 116/116/1 117/117/1
|
||||
f 118/118/1 119/119/1 120/120/1
|
||||
f 121/121/1 122/122/1 123/123/1
|
||||
f 124/124/1 125/125/1 126/126/1
|
||||
f 127/127/1 128/128/1 129/129/1
|
||||
f 130/130/1 131/131/1 132/132/1
|
||||
f 133/133/1 134/134/1 135/135/1
|
||||
f 136/136/1 137/137/1 138/138/1
|
||||
f 139/139/1 140/140/1 141/141/1
|
||||
f 142/142/1 143/143/1 144/144/1
|
||||
f 145/145/1 146/146/1 147/147/1
|
||||
f 148/148/1 149/149/1 150/150/1
|
||||
f 151/151/1 152/152/1 153/153/1
|
||||
f 154/154/1 155/155/1 156/156/1
|
||||
f 157/157/1 158/158/1 159/159/1
|
||||
f 160/160/1 161/161/1 162/162/1
|
||||
f 163/163/1 164/164/1 165/165/1
|
||||
f 166/166/1 167/167/1 168/168/1
|
||||
f 169/169/1 170/170/1 171/171/1
|
||||
f 172/172/1 173/173/1 174/174/1
|
||||
f 175/175/1 176/176/1 177/177/1
|
||||
f 178/178/1 179/179/1 180/180/1
|
||||
f 181/181/1 182/182/1 183/183/1
|
||||
f 184/184/1 185/185/1 186/186/1
|
||||
f 187/187/1 188/188/1 189/189/1
|
||||
f 190/190/1 191/191/1 192/192/1
|
||||
f 193/193/1 194/194/1 195/195/1
|
||||
f 196/196/1 197/197/1 198/198/1
|
||||
f 199/199/1 200/200/1 201/201/1
|
||||
f 202/202/1 203/203/1 204/204/1
|
||||
f 205/205/1 206/206/1 207/207/1
|
||||
f 208/208/1 209/209/1 210/210/1
|
||||
f 211/211/1 212/212/1 213/213/1
|
||||
f 214/214/1 215/215/1 216/216/1
|
||||
f 217/217/1 218/218/1 219/219/1
|
||||
f 220/220/1 221/221/1 222/222/1
|
||||
f 223/223/1 224/224/1 225/225/1
|
||||
f 226/226/1 227/227/1 228/228/1
|
||||
f 229/229/1 230/230/1 231/231/1
|
||||
f 232/232/1 233/233/1 234/234/1
|
||||
f 235/235/1 236/236/1 237/237/1
|
||||
f 238/238/1 239/239/1 240/240/1
|
||||
f 241/241/1 242/242/1 243/243/1
|
||||
f 1/1/1 244/244/1 2/2/1
|
||||
f 4/4/1 245/245/1 5/5/1
|
||||
f 7/7/1 246/246/1 8/8/1
|
||||
f 10/10/1 247/247/1 11/11/1
|
||||
f 13/13/1 248/248/1 14/14/1
|
||||
f 16/16/1 249/249/1 17/17/1
|
||||
f 19/19/1 250/250/1 20/20/1
|
||||
f 22/22/1 251/251/1 23/23/1
|
||||
f 25/25/1 252/252/1 26/26/1
|
||||
f 28/28/1 253/253/1 29/29/1
|
||||
f 31/31/1 254/254/1 32/32/1
|
||||
f 34/34/1 255/255/1 35/35/1
|
||||
f 37/37/1 256/256/1 38/38/1
|
||||
f 40/40/1 257/257/1 41/41/1
|
||||
f 43/43/1 258/258/1 44/44/1
|
||||
f 46/46/1 259/259/1 47/47/1
|
||||
f 49/49/1 260/260/1 50/50/1
|
||||
f 52/52/1 261/261/1 53/53/1
|
||||
f 55/55/1 262/262/1 56/56/1
|
||||
f 58/58/1 263/263/1 59/59/1
|
||||
f 61/61/1 264/264/1 62/62/1
|
||||
f 64/64/1 265/265/1 65/65/1
|
||||
f 67/67/1 266/266/1 68/68/1
|
||||
f 70/70/1 267/267/1 71/71/1
|
||||
f 73/73/1 268/268/1 74/74/1
|
||||
f 76/76/1 269/269/1 77/77/1
|
||||
f 79/79/1 270/270/1 80/80/1
|
||||
f 82/82/1 271/271/1 83/83/1
|
||||
f 85/85/1 272/272/1 86/86/1
|
||||
f 88/88/1 273/273/1 89/89/1
|
||||
f 91/91/1 274/274/1 92/92/1
|
||||
f 94/94/1 275/275/1 95/95/1
|
||||
f 97/97/1 276/276/1 98/98/1
|
||||
f 100/100/1 277/277/1 101/101/1
|
||||
f 103/103/1 278/278/1 104/104/1
|
||||
f 106/106/1 279/279/1 107/107/1
|
||||
f 109/109/1 280/280/1 110/110/1
|
||||
f 112/112/1 281/281/1 113/113/1
|
||||
f 115/115/1 282/282/1 116/116/1
|
||||
f 118/118/1 283/283/1 119/119/1
|
||||
f 121/121/1 284/284/1 122/122/1
|
||||
f 124/124/1 285/285/1 125/125/1
|
||||
f 127/127/1 286/286/1 128/128/1
|
||||
f 130/130/1 287/287/1 131/131/1
|
||||
f 133/133/1 288/288/1 134/134/1
|
||||
f 136/136/1 289/289/1 137/137/1
|
||||
f 139/139/1 290/290/1 140/140/1
|
||||
f 142/142/1 291/291/1 143/143/1
|
||||
f 145/145/1 292/292/1 146/146/1
|
||||
f 148/148/1 293/293/1 149/149/1
|
||||
f 151/151/1 294/294/1 152/152/1
|
||||
f 154/154/1 295/295/1 155/155/1
|
||||
f 157/157/1 296/296/1 158/158/1
|
||||
f 160/160/1 297/297/1 161/161/1
|
||||
f 163/163/1 298/298/1 164/164/1
|
||||
f 166/166/1 299/299/1 167/167/1
|
||||
f 169/169/1 300/300/1 170/170/1
|
||||
f 172/172/1 301/301/1 173/173/1
|
||||
f 175/175/1 302/302/1 176/176/1
|
||||
f 178/178/1 303/303/1 179/179/1
|
||||
f 181/181/1 304/304/1 182/182/1
|
||||
f 184/184/1 305/305/1 185/185/1
|
||||
f 187/187/1 306/306/1 188/188/1
|
||||
f 190/190/1 307/307/1 191/191/1
|
||||
f 193/193/1 308/308/1 194/194/1
|
||||
f 196/196/1 309/309/1 197/197/1
|
||||
f 199/199/1 310/310/1 200/200/1
|
||||
f 202/202/1 311/311/1 203/203/1
|
||||
f 205/205/1 312/312/1 206/206/1
|
||||
f 208/208/1 313/313/1 209/209/1
|
||||
f 211/211/1 314/314/1 212/212/1
|
||||
f 214/214/1 315/315/1 215/215/1
|
||||
f 217/217/1 316/316/1 218/218/1
|
||||
f 220/220/1 317/317/1 221/221/1
|
||||
f 223/223/1 318/318/1 224/224/1
|
||||
f 226/226/1 319/319/1 227/227/1
|
||||
f 229/229/1 320/320/1 230/230/1
|
||||
f 232/232/1 321/321/1 233/233/1
|
||||
f 235/235/1 322/322/1 236/236/1
|
||||
f 238/238/1 323/323/1 239/239/1
|
||||
f 241/241/1 324/324/1 242/242/1
|
61
types.h
61
types.h
|
@ -1,9 +1,10 @@
|
|||
#ifndef TYPEDEFS
|
||||
#define TYPEDEFS
|
||||
|
||||
typedef double scalar;
|
||||
typedef unsigned char byte;
|
||||
typedef double grid3x3[3][3];
|
||||
typedef double grid4x4[4][4];
|
||||
typedef scalar grid3x3[3][3];
|
||||
typedef scalar grid4x4[4][4];
|
||||
|
||||
#endif /* TYPEDEFS */
|
||||
|
||||
|
@ -18,21 +19,21 @@ STRUCT(rgb)
|
|||
END_STRUCT
|
||||
|
||||
STRUCT(vec2)
|
||||
FIELD(x, double)
|
||||
FIELD(y, double)
|
||||
FIELD(x, scalar)
|
||||
FIELD(y, scalar)
|
||||
END_STRUCT
|
||||
|
||||
STRUCT(vec3)
|
||||
FIELD(x, double)
|
||||
FIELD(y, double)
|
||||
FIELD(z, double)
|
||||
FIELD(x, scalar)
|
||||
FIELD(y, scalar)
|
||||
FIELD(z, scalar)
|
||||
END_STRUCT
|
||||
|
||||
STRUCT(vec4)
|
||||
FIELD(x, double)
|
||||
FIELD(y, double)
|
||||
FIELD(z, double)
|
||||
FIELD(w, double)
|
||||
FIELD(x, scalar)
|
||||
FIELD(y, scalar)
|
||||
FIELD(z, scalar)
|
||||
FIELD(w, scalar)
|
||||
END_STRUCT
|
||||
|
||||
STRUCT(mat3x3)
|
||||
|
@ -44,13 +45,25 @@ STRUCT(mat4x4)
|
|||
END_STRUCT
|
||||
|
||||
STRUCT(camera)
|
||||
FIELD(znear, double)
|
||||
FIELD(znear, scalar)
|
||||
FIELD(pos, vec3)
|
||||
FIELD(front, vec3)
|
||||
FIELD(up, vec3)
|
||||
FIELD(right, vec3)
|
||||
FIELD(yaw, double)
|
||||
FIELD(pitch, double)
|
||||
FIELD(yaw, scalar)
|
||||
FIELD(pitch, scalar)
|
||||
END_STRUCT
|
||||
|
||||
STRUCT(triangle2)
|
||||
FIELD(a, vec2)
|
||||
FIELD(b, vec2)
|
||||
FIELD(c, vec2)
|
||||
END_STRUCT
|
||||
|
||||
STRUCT(triangle3)
|
||||
FIELD(a, vec3)
|
||||
FIELD(b, vec3)
|
||||
FIELD(c, vec3)
|
||||
END_STRUCT
|
||||
|
||||
#else
|
||||
|
@ -70,7 +83,7 @@ END_STRUCT
|
|||
#ifdef TYPES_IMPL
|
||||
|
||||
void
|
||||
print_grid(size_t y_sz, size_t x_sz, double grid[y_sz][x_sz])
|
||||
print_grid(size_t y_sz, size_t x_sz, scalar grid[y_sz][x_sz])
|
||||
{
|
||||
printf("\n");
|
||||
for (size_t y = 0; y < y_sz; y++) {
|
||||
|
@ -81,7 +94,7 @@ print_grid(size_t y_sz, size_t x_sz, double grid[y_sz][x_sz])
|
|||
}
|
||||
}
|
||||
|
||||
void print_double(double d) { printf(" %f ", d); }
|
||||
void print_scalar(scalar d) { printf(" %f ", d); }
|
||||
void print_byte(byte b) { printf(" %d ", b); }
|
||||
void print_grid3x3(grid3x3 grid) { print_grid(3, 3, grid); }
|
||||
void print_grid4x4(grid4x4 grid) { print_grid(4, 4, grid); }
|
||||
|
@ -124,7 +137,7 @@ vec3_sub(vec3 u, vec3 v)
|
|||
}
|
||||
|
||||
vec3
|
||||
vec3_scalar_mul(vec3 v, double s)
|
||||
vec3_scalar_mul(vec3 v, scalar s)
|
||||
{
|
||||
return (vec3) {
|
||||
.x = v.x * s,
|
||||
|
@ -143,7 +156,7 @@ vec3_cross(vec3 u, vec3 v)
|
|||
};
|
||||
}
|
||||
|
||||
double
|
||||
scalar
|
||||
vec3_dot(vec3 u, vec3 v)
|
||||
{
|
||||
return u.x * v.x + u.y * v.y + u.z * v.z;
|
||||
|
@ -152,7 +165,7 @@ vec3_dot(vec3 u, vec3 v)
|
|||
vec3
|
||||
vec3_normalize(vec3 u)
|
||||
{
|
||||
double len = sqrt(u.x*u.x + u.y*u.y + u.z*u.z);
|
||||
scalar len = sqrt(u.x*u.x + u.y*u.y + u.z*u.z);
|
||||
return (vec3) {
|
||||
.x = u.x / len,
|
||||
.y = u.y / len,
|
||||
|
@ -189,7 +202,7 @@ vec4_sub(vec4 u, vec4 v)
|
|||
}
|
||||
|
||||
void
|
||||
mat_mul(size_t dim, double m1[dim][dim], double m2[dim][dim], double out[dim][dim])
|
||||
mat_mul(size_t dim, scalar m1[dim][dim], scalar m2[dim][dim], scalar out[dim][dim])
|
||||
{
|
||||
for (size_t i = 0; i < dim; i++) {
|
||||
for (size_t j = 0; j < dim; j++) {
|
||||
|
@ -261,10 +274,10 @@ lookat(camera cam)
|
|||
void
|
||||
update_camera(camera *cam)
|
||||
{
|
||||
double α = cos(cam->pitch);
|
||||
double β = sin(cam->pitch);
|
||||
double x = cos(cam->yaw);
|
||||
double y = sin(cam->yaw);
|
||||
scalar α = cos(cam->pitch);
|
||||
scalar β = sin(cam->pitch);
|
||||
scalar x = cos(cam->yaw);
|
||||
scalar y = sin(cam->yaw);
|
||||
|
||||
vec3 front = {
|
||||
.x = α * y,
|
||||
|
|
Loading…
Reference in New Issue