diff --git a/src/graphics/buffers.c b/src/graphics/buffers.c index a6deb12..6519d28 100644 --- a/src/graphics/buffers.c +++ b/src/graphics/buffers.c @@ -48,7 +48,7 @@ static int lines_index = 0; -static bool grids_intersections (int x, int y, int z, +static bool grids_intersections_volume (int x, int y, int z, GLfloat *vertex_origin, GLfloat *colors_origin) { @@ -283,7 +283,7 @@ static void draw_ridges_3D (int x, int y, int z, } -static bool draw_grids_3D (int x, int y, int z, +static bool draw_grids_3D_volume (int x, int y, int z, int step_x, int step_y, int step_z, GLuint *lines_origin, int pref_show_grid) @@ -341,46 +341,6 @@ static void draw_a_central_star(GLuint *lines_origin, int n) } - -/* W 4 (- 9) */ -/* E 22 (+ 9) */ -/* A 10 (- 3) */ -/* Z 16 (+ 3) */ -/* S 12 (- 1) */ -/* N 14 (+ 1) */ -/* */ -// draw_a_central_star (lines_origin, s + 14 * 6); - -/* EZ 25 22+3 */ -/* EA 19 22-3 */ -/* ES 21 22-1 */ -/* EN 23 22+1 */ - -/* WZ 7 4+3 */ -/* WA 1 4-3 */ -/* WS 3 4-1 */ -/* WN 5 4+1 */ - -/* ZE 25 16+9 */ -/* ZW 7 16-9 */ -/* ZS 15 16-1 */ -/* ZN 17 16+1 */ - -/* AE 19 10+9 */ -/* AW 1 10-9 */ -/* AS 9 10-1 */ -/* AN 11 10+1 */ -/* */ -/* SE 21 12+9 */ -/* SW 3 12-9 */ -/* SZ 15 12+3 */ -/* SA 9 12-3 */ -/* */ -/* NE 23 14+9 */ -/* NW 5 14-9 */ -/* NZ 17 14+3 */ -/* NA 11 14-3 */ - static void draw_3_x_4_around_6_poles(GLuint *lines_origin, int n, int side_size) { /* N-S C +/- f */ @@ -423,19 +383,6 @@ static void draw_3_x_4_around_6_poles(GLuint *lines_origin, int n, int side_size draw_a_central_star (lines_origin, n + (s - z - y) * 6); // W } -static void draw_a_central_star_in_a_cubic_space(GLuint *lines_origin, int n, int side_size) -{ -/* DANS UN CUBE DE COTE 3 LE CENTRE EST À 3 x 3 x 3 = 27 / 2 = 13,5 >> 13 * 6 - * DANS UN CUBE DE COTE 5 LE CENTRE EST À 5 x 5 x 5 = 125 / 2 = 62,5 >> 62 * 6 - * DANS UN CUBE DE COTE 7 LE CENTRE EST À 7 x 7 x 7 = 342 / 2 = 171,5 >> 171 * 6 - * ETC. - * JE CHOISIS DES CUBES AYANT DES COTÉS IMPAIRS POUR QU'IL Y AIT UNE CASE CENTRALE - */ - int s = side_size * side_size * side_size / 2; - - draw_a_central_star(lines_origin, n + s * 6); -} - static void draw_EW_ZA_SN_in_a_cubic_space(GLuint *lines_origin, int n, int side_size) { /* N-S C +/- f */ @@ -455,6 +402,19 @@ static void draw_EW_ZA_SN_in_a_cubic_space(GLuint *lines_origin, int n, int side draw_a_central_star (lines_origin, n + (s - z) * 6); // N } +static void draw_a_central_star_in_a_cubic_space(GLuint *lines_origin, int n, int side_size) +{ +/* DANS UN CUBE DE COTE 3 LE CENTRE EST À 3 x 3 x 3 = 27 / 2 = 13,5 >> 13 * 6 + * DANS UN CUBE DE COTE 5 LE CENTRE EST À 5 x 5 x 5 = 125 / 2 = 62,5 >> 62 * 6 + * DANS UN CUBE DE COTE 7 LE CENTRE EST À 7 x 7 x 7 = 342 / 2 = 171,5 >> 171 * 6 + * ETC. + * JE CHOISIS DES CUBES AYANT DES COTÉS IMPAIRS POUR QU'IL Y AIT UNE CASE CENTRALE + */ + int s = side_size * side_size * side_size / 2; + + draw_a_central_star(lines_origin, n + s * 6); +} + // I'm standing on Earth (any planet or star or spinning spheroid, in fact) // and looking towards its North pole @@ -475,40 +435,52 @@ bool compute_space(int cube_side, GLuint *lines_origin, GLuint *plans_origin) { - grids_intersections (cube_side, cube_side, cube_side, vertex_origin, colors_origin); + grids_intersections_volume (cube_side, cube_side, cube_side, vertex_origin, colors_origin); central_stars (cube_side, cube_side, cube_side, vertex_origin, colors_origin); centers (cube_side, cube_side, cube_side, vertex_origin, colors_origin); int step_z = 1, step_y = cube_side + 1, step_x = (cube_side + 1) * (cube_side + 1); if (pref_show_grid > 0) draw_ridges_3D (cube_side, cube_side, cube_side, step_x, step_y, step_z, lines_origin); - draw_grids_3D (cube_side, cube_side, cube_side, step_x, step_y, step_z, lines_origin, pref_show_grid); + draw_grids_3D_volume (cube_side, cube_side, cube_side, step_x, step_y, step_z, lines_origin, pref_show_grid); int s = step_z * cube_side + step_y * cube_side + step_x * cube_side + 1; int side_size = cube_side; /* IT IS A CUBE ! space_x = space_y = space_z */ -// draw_a_central_star_in_a_cubic_space (lines_origin, s, side_size); + draw_a_central_star_in_a_cubic_space (lines_origin, s, side_size); draw_EW_ZA_SN_in_a_cubic_space (lines_origin, s, side_size); draw_3_x_4_around_6_poles (lines_origin, s, side_size); if (0) for (int i = 0; i < side_size * side_size * side_size; i ++) draw_a_central_star (lines_origin, s + i * 6); -// -// draw_a_central_star (lines_origin, s + 12 * 6); // W -// draw_a_central_star (lines_origin, s + 112 * 6); // E -// draw_a_central_star (lines_origin, s + 72 * 6); // Z -// draw_a_central_star (lines_origin, s + 52 * 6); // A -// draw_a_central_star (lines_origin, s + 60 * 6); // S -// draw_a_central_star (lines_origin, s + 64 * 6); // N - -// draw_a_central_star (lines_origin, s + 24 * 6); // W -// draw_a_central_star (lines_origin, s + 318 * 6); // E -// draw_a_central_star (lines_origin, s + 192 * 6); // Z -// draw_a_central_star (lines_origin, s + 150 * 6); // A -// draw_a_central_star (lines_origin, s + 168 * 6); // S -// draw_a_central_star (lines_origin, s + 174 * 6); // N printf("side = %d step_x = %d step_y = %d step_z = %d\n",\ cube_side, (cube_side + 1) * (cube_side + 1), cube_side + 1, 1); + if (pref_test_diagonal) diagonal_test (cube_side, cube_side, cube_side, step_x, step_y, step_z, lines_origin); + + printf(" Prochain objectif : dessiner les croix E, W, N, S, Z A puis EN, ES, etc.\n\ + Puis dessiner toutes les croix limitant un voisinage de Moore 3D sphérique.\n"); + + return 0; +} + + + + + + + + + + +// S C O R I E S --------------------------------------------------- + + + + + + + + /* ------------------------------------------------------------------------*/ /* 3 5 7 11 */ /* ------------------------------------------------------------------------*/ @@ -574,30 +546,7 @@ bool compute_space(int cube_side, - /* ZS 10 70 */ - /*-------------------------------------------------------------*/ - /* 13-4=7 63-12=51 */ - // draw_line (lines_origin, 3500, 2422);// further experiments... - - if (pref_test_diagonal) diagonal_test (cube_side, cube_side, cube_side, step_x, step_y, step_z, lines_origin); - - printf(" Prochain objectif : dessiner les croix E, W, N, S, Z A puis EN, ES, etc.\n\ - Puis dessiner toutes les croix limitant un voisinage de Moore 3D sphérique.\n"); - - return 0; -} - - - - - - - - - - -// S C O R I E S --------------------------------------------------- /* static void draw_an_arrow_East_or_West (GLuint *lines_origin, int s, int weight, int site) */ /* { */