completed triangle display function
This commit is contained in:
parent
de5868f24d
commit
6204e6011a
BIN
obj/display.o
BIN
obj/display.o
Binary file not shown.
BIN
obj/generation.o
BIN
obj/generation.o
Binary file not shown.
110
src/display.c
110
src/display.c
|
@ -404,7 +404,115 @@ void renderTriangle(
|
||||||
construct_vertex(1500.0 * (1.0 + (px2 / (1.5 * pz2 * tan_fov))) / 2.0, 1000.0 * (1.0 + (py2 / (pz2 * tan_fov))) / 2.0, red, green, blue),
|
construct_vertex(1500.0 * (1.0 + (px2 / (1.5 * pz2 * tan_fov))) / 2.0, 1000.0 * (1.0 + (py2 / (pz2 * tan_fov))) / 2.0, red, green, blue),
|
||||||
};
|
};
|
||||||
SDL_RenderGeometry(renderer, NULL, vtxs, 3, NULL, 0);
|
SDL_RenderGeometry(renderer, NULL, vtxs, 3, NULL, 0);
|
||||||
} // TODO //
|
} else if((pz0 >= 0.4) + (pz1 >= 0.4) + (pz2 >= 0.4) == 2) {
|
||||||
|
double fpx0; double fpy0; double fpz0;
|
||||||
|
double fpx1; double fpy1; double fpz1;
|
||||||
|
double mpx0; double mpy0; double mpz0;
|
||||||
|
double mpx1; double mpy1; double mpz1;
|
||||||
|
if(pz0 < 0.4) {
|
||||||
|
// pz1 >= 0.4 and pz2 >+ 0.4
|
||||||
|
fpx0 = px1 ; fpy0 = py1 ; fpz0 = pz1 ;
|
||||||
|
fpx1 = px2 ; fpy1 = py2 ; fpz1 = pz2 ;
|
||||||
|
// 1-0 segment
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x1, x0, (pz1 - 0.4)/(pz1 - pz0)),
|
||||||
|
convex_pt(y1, y0, (pz1 - 0.4)/(pz1 - pz0)),
|
||||||
|
convex_pt(z1, z0, (pz1 - 0.4)/(pz1 - pz0)),
|
||||||
|
&mpx0, &mpy0, &mpz0) ;
|
||||||
|
|
||||||
|
// 0-2 segment
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x2, x0, (pz2 - 0.4)/(pz2 - pz0)),
|
||||||
|
convex_pt(y2, y0, (pz2 - 0.4)/(pz2 - pz0)),
|
||||||
|
convex_pt(z2, z0, (pz2 - 0.4)/(pz2 - pz0)),
|
||||||
|
&mpx1, &mpy1, &mpz1) ;
|
||||||
|
} else if(pz1 < 0.4) {
|
||||||
|
// pz0 >= 0.4 and pz2 >+ 0.4
|
||||||
|
fpx0 = px0 ; fpy0 = py0 ; fpz0 = pz0 ;
|
||||||
|
fpx1 = px2 ; fpy1 = py2 ; fpz1 = pz2 ;
|
||||||
|
// 0-1 segment
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x0, x1, (pz0 - 0.4)/(pz0 - pz1)),
|
||||||
|
convex_pt(y0, y1, (pz0 - 0.4)/(pz0 - pz1)),
|
||||||
|
convex_pt(z0, z1, (pz0 - 0.4)/(pz0 - pz1)),
|
||||||
|
&mpx0, &mpy0, &mpz0) ;
|
||||||
|
|
||||||
|
// 1-2 segment
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x2, x1, (pz2 - 0.4)/(pz2 - pz1)),
|
||||||
|
convex_pt(y2, y1, (pz2 - 0.4)/(pz2 - pz1)),
|
||||||
|
convex_pt(z2, z1, (pz2 - 0.4)/(pz2 - pz1)),
|
||||||
|
&mpx1, &mpy1, &mpz1) ;
|
||||||
|
} else if(pz2 < 0.4) {
|
||||||
|
// pz1 >= 0.4 and pz0 >+ 0.4
|
||||||
|
fpx0 = px0 ; fpy0 = py0 ; fpz0 = pz0 ;
|
||||||
|
fpx1 = px1 ; fpy1 = py1 ; fpz1 = pz1 ;
|
||||||
|
// 0-2 segment
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x0, x2, (pz0 - 0.4)/(pz0 - pz2)),
|
||||||
|
convex_pt(y0, y2, (pz0 - 0.4)/(pz0 - pz2)),
|
||||||
|
convex_pt(z0, z2, (pz0 - 0.4)/(pz0 - pz2)),
|
||||||
|
&mpx0, &mpy0, &mpz0) ;
|
||||||
|
|
||||||
|
// 1-2 segment
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x1, x2, (pz1 - 0.4)/(pz1 - pz2)),
|
||||||
|
convex_pt(y1, y2, (pz1 - 0.4)/(pz1 - pz2)),
|
||||||
|
convex_pt(z1, z2, (pz1 - 0.4)/(pz1 - pz2)),
|
||||||
|
&mpx1, &mpy1, &mpz1) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
const SDL_Vertex vtxs[6] = {
|
||||||
|
construct_vertex(1500.0 * (1.0 + (fpx0 / (1.5 * fpz0 * tan_fov))) / 2.0, 1000.0 * (1.0 + (fpy0 / (fpz0 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
construct_vertex(1500.0 * (1.0 + (mpx0 / (1.5 * mpz0 * tan_fov))) / 2.0, 1000.0 * (1.0 + (mpy0 / (mpz0 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
construct_vertex(1500.0 * (1.0 + (fpx1 / (1.5 * fpz1 * tan_fov))) / 2.0, 1000.0 * (1.0 + (fpy1 / (fpz1 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
construct_vertex(1500.0 * (1.0 + (mpx0 / (1.5 * mpz0 * tan_fov))) / 2.0, 1000.0 * (1.0 + (mpy0 / (mpz0 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
construct_vertex(1500.0 * (1.0 + (mpx1 / (1.5 * mpz1 * tan_fov))) / 2.0, 1000.0 * (1.0 + (mpy1 / (mpz1 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
construct_vertex(1500.0 * (1.0 + (fpx1 / (1.5 * fpz1 * tan_fov))) / 2.0, 1000.0 * (1.0 + (fpy1 / (fpz1 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
};
|
||||||
|
SDL_RenderGeometry(renderer, NULL, vtxs, 6, NULL, 0);
|
||||||
|
} else if((pz0 >= 0.4) + (pz1 >= 0.4) + (pz2 >= 0.4) == 1) {
|
||||||
|
if(pz0 >= 0.4) {
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x0, x1, (pz0 - 0.4)/(pz0 - pz1)),
|
||||||
|
convex_pt(y0, y1, (pz0 - 0.4)/(pz0 - pz1)),
|
||||||
|
convex_pt(z0, z1, (pz0 - 0.4)/(pz0 - pz1)),
|
||||||
|
&px1, &py1, &pz1);
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x0, x2, (pz0 - 0.4)/(pz0 - pz2)),
|
||||||
|
convex_pt(y0, y2, (pz0 - 0.4)/(pz0 - pz2)),
|
||||||
|
convex_pt(z0, z2, (pz0 - 0.4)/(pz0 - pz2)),
|
||||||
|
&px2, &py2, &pz2);
|
||||||
|
} else if(pz1 >= 0.4) {
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x1, x0, (pz1 - 0.4)/(pz1 - pz0)),
|
||||||
|
convex_pt(y1, y0, (pz1 - 0.4)/(pz1 - pz0)),
|
||||||
|
convex_pt(z1, z0, (pz1 - 0.4)/(pz1 - pz0)),
|
||||||
|
&px0, &py0, &pz0);
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x1, x2, (pz1 - 0.4)/(pz1 - pz2)),
|
||||||
|
convex_pt(y1, y2, (pz1 - 0.4)/(pz1 - pz2)),
|
||||||
|
convex_pt(z1, z2, (pz1 - 0.4)/(pz1 - pz2)),
|
||||||
|
&px2, &py2, &pz2);
|
||||||
|
} else if(pz2 >= 0.4) {
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x2, x0, (pz2 - 0.4)/(pz2 - pz0)),
|
||||||
|
convex_pt(y2, y0, (pz2 - 0.4)/(pz2 - pz0)),
|
||||||
|
convex_pt(z2, z0, (pz2 - 0.4)/(pz2 - pz0)),
|
||||||
|
&px0, &py0, &pz0);
|
||||||
|
project_to_camera(
|
||||||
|
convex_pt(x2, x1, (pz2 - 0.4)/(pz2 - pz1)),
|
||||||
|
convex_pt(y2, y1, (pz2 - 0.4)/(pz2 - pz1)),
|
||||||
|
convex_pt(z2, z1, (pz2 - 0.4)/(pz2 - pz1)),
|
||||||
|
&px1, &py1, &pz1);
|
||||||
|
}
|
||||||
|
const SDL_Vertex vtxs[3] = {
|
||||||
|
construct_vertex(1500.0 * (1.0 + (px0 / (1.5 * pz0 * tan_fov))) / 2.0, 1000.0 * (1.0 + (py0 / (pz0 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
construct_vertex(1500.0 * (1.0 + (px1 / (1.5 * pz1 * tan_fov))) / 2.0, 1000.0 * (1.0 + (py1 / (pz1 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
construct_vertex(1500.0 * (1.0 + (px2 / (1.5 * pz2 * tan_fov))) / 2.0, 1000.0 * (1.0 + (py2 / (pz2 * tan_fov))) / 2.0, red, green, blue),
|
||||||
|
};
|
||||||
|
SDL_RenderGeometry(renderer, NULL, vtxs, 3, NULL, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderTriangleRotated(
|
void renderTriangleRotated(
|
||||||
|
|
|
@ -39,9 +39,9 @@ void build_chunk_1(int chx, int chy) {
|
||||||
new->map[5] = create_cube_0(4.0, 1.0, 4.0, 1.0, 5.0, 1.0, 0.0, 0.0, 255, 255, 128);
|
new->map[5] = create_cube_0(4.0, 1.0, 4.0, 1.0, 5.0, 1.0, 0.0, 0.0, 255, 255, 128);
|
||||||
|
|
||||||
new->tps[0] = create_teleporter(-1.0, 1.0, 2.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 255, 0, 0 , chx-1, chy , 2.5, 2.5, 2.5);
|
new->tps[0] = create_teleporter(-1.0, 1.0, 2.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 255, 0, 0 , chx-1, chy , 2.5, 2.5, 2.5);
|
||||||
new->tps[1] = create_teleporter(2.0, 1.0, -1.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 255, 255, 0, chx , chy+1, 2.5, 2.5, 2.5);
|
new->tps[1] = create_teleporter(2.0, 1.0, -1.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 255, 255, 0, chx , chy-1, 2.5, 2.5, 2.5);
|
||||||
new->tps[2] = create_teleporter(5.0, 1.0, 2.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 0, 255, 0 , chx+1, chy , 2.5, 2.5, 2.5);
|
new->tps[2] = create_teleporter(5.0, 1.0, 2.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 0, 255, 0 , chx+1, chy , 2.5, 2.5, 2.5);
|
||||||
new->tps[3] = create_teleporter(2.0, 1.0, 5.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 0, 0, 255 , chx , chy-1, 2.5, 2.5, 2.5);
|
new->tps[3] = create_teleporter(2.0, 1.0, 5.0, 1.0, 2.0 + (double)(rand()%2), 1.0, 3.14159/4.0, 0.0, 0, 0, 255 , chx , chy+1, 2.5, 2.5, 2.5);
|
||||||
|
|
||||||
//printf("linked (%d, %d) to :\n", chx, chy);
|
//printf("linked (%d, %d) to :\n", chx, chy);
|
||||||
//printf(" {%d, %d}; {%d, %d}; {%d, %d}; {%d, %d}\n", chx-1, chy, chx, chy+1, chx+1, chy, chx, chy-1);
|
//printf(" {%d, %d}; {%d, %d}; {%d, %d}; {%d, %d}\n", chx-1, chy, chx, chy+1, chx+1, chy, chx, chy-1);
|
||||||
|
|
Loading…
Reference in New Issue