From 0274bd68fce4e5afc7e0eaa233003a3b36e771bc Mon Sep 17 00:00:00 2001 From: Jean Sirmai Date: Mon, 7 Aug 2023 11:56:52 +0200 Subject: [PATCH] =?UTF-8?q?WIP:=20premiers=20dim=C3=A8res=20facilement=20d?= =?UTF-8?q?essin=C3=A9s=20(is=20OK)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dimere_2023-2-cases.png | Bin 0 -> 68350 bytes dimere_2023-7-cases.png | Bin 0 -> 929 bytes src/graphics/buffers.c | 131 ++++++++++++++++++++++++++++++++++++---- src/graphics/graphics.c | 13 ++-- 4 files changed, 126 insertions(+), 18 deletions(-) create mode 100644 dimere_2023-2-cases.png create mode 100644 dimere_2023-7-cases.png diff --git a/dimere_2023-2-cases.png b/dimere_2023-2-cases.png new file mode 100644 index 0000000000000000000000000000000000000000..4c991031d50b6547f40da1a81bf741380ce78f0e GIT binary patch literal 68350 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
qA()g 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 literal 0 HcmV?d00001 diff --git a/dimere_2023-7-cases.png b/dimere_2023-7-cases.png new file mode 100644 index 0000000000000000000000000000000000000000..db506690e58922de4ee8f37e0699d88f01179e92 GIT binary patch literal 929 zcmeAS@N?(olHy`uVBq!ia0y~yU}OWbgE&Csw%DpnAjMMbrw+;Q=D)#Ww!?!P~1`<{<4Z_WKPYuOS`{HT*>xL|jP zL4-oIy{GEH%e?$6$`1}yZNLBKyJAk}l0=KUZ{Pmxly94P?&Gr=H=mjN#;Z0sNnk;X zwkE#VXR~|z=eS$9D=(xe|M&djcUI@zlHXr)HqA+~eEHvC`)lJ}{O8psd#X*I`E+J% zygc8kYi$dSUp)Dme}2vT^7nFGM=s8FU-bLA8_zHM{5791CO^-Akn!-@rB?<#ug|aF z+tIIfH@;ozU0&S# zZBtXMPJXEM&J&uPZasN&XPwJda6IG#Lsa8!=UA1)?7#R@J)hkyQ_>N<95sBzxyAbZF|*bXWifa zd+{@4cI%jOU!Mc?=IX-*YszzM+3d~kt9z;y{pMX;oo+nw>Yuqwb)GD|r~G=Ng;BA} z{in0~u5d4GBFy2|_|#&wx>QTzWTy}#m-e$esKt$4dWE3WYB{g&I8e_n7l zN}4ULFChGY*d*{`+^4p4Y|JB>w$Z!ATpF8>6Jd1+deO?T$2Gm4H?f2a{-2VTf S(LP`vWAJqKb6Mw<&;$UI`KU4g literal 0 HcmV?d00001 diff --git a/src/graphics/buffers.c b/src/graphics/buffers.c index d5fd06a..ffdaf18 100644 --- a/src/graphics/buffers.c +++ b/src/graphics/buffers.c @@ -623,17 +623,17 @@ static bool grids_intersections (long x, long y, long z, static bool arrows_anchors (long x, long y, long z, GLfloat *vertex_origin, GLfloat *colors_origin) { + // beaucoup de ^c ^v ici (peu d'info) (mais un peu) float i, j, k, vx, vy, vz, + max = fmax(x, y), ad = 1 / max, - eps = 0.3f * ad, // eps(ilon) donne la dimension de l'étoile centrale - mic = 0.1 * ad, // mic servira à décaler légèrement les pointes des flèches + a_third = 0.3f * ad, // a_third donne la dimension de l'étoile centrale + eps = 0.1 * ad; // eps(ilon) servira à décaler légèrement les pointes des flèches // pour qu'elles n'aillent pas jusqu'aux faces des cubes - // TODO ! (les centres des six faces) - max = fmax(x, y); max = fmax(max, z); - printf("arrows_anchors 1 / max = %5.2f max / 2 = %5.2f\n", ad, max / 2); + if (0) printf("arrows_anchors 1 / max = %5.2f max / 2 = %5.2f\n", ad, max / 2); for (i = 0; i < x; i++) for (j = 0; j < y; j++) @@ -645,13 +645,13 @@ static bool arrows_anchors (long x, long y, long z, // X - X axis Central Star - *(vertex_origin + vertex_index + 0) = vx + eps; + *(vertex_origin + vertex_index + 0) = vx + a_third; *(vertex_origin + vertex_index + 1) = vy; *(vertex_origin + vertex_index + 2) = vz; vertex_index += 3; - *(vertex_origin + vertex_index + 0) = vx - eps; + *(vertex_origin + vertex_index + 0) = vx - a_third; *(vertex_origin + vertex_index + 1) = vy; *(vertex_origin + vertex_index + 2) = vz; @@ -673,13 +673,13 @@ static bool arrows_anchors (long x, long y, long z, // Y - Y axis Central Star *(vertex_origin + vertex_index + 0) = vx; - *(vertex_origin + vertex_index + 1) = vy + eps; + *(vertex_origin + vertex_index + 1) = vy + a_third; *(vertex_origin + vertex_index + 2) = vz; vertex_index += 3; *(vertex_origin + vertex_index + 0) = vx; - *(vertex_origin + vertex_index + 1) = vy - eps; + *(vertex_origin + vertex_index + 1) = vy - a_third; *(vertex_origin + vertex_index + 2) = vz; vertex_index += 3; @@ -701,13 +701,13 @@ static bool arrows_anchors (long x, long y, long z, *(vertex_origin + vertex_index + 0) = vx; *(vertex_origin + vertex_index + 1) = vy; - *(vertex_origin + vertex_index + 2) = vz + eps; + *(vertex_origin + vertex_index + 2) = vz + a_third; vertex_index += 3; *(vertex_origin + vertex_index + 0) = vx; *(vertex_origin + vertex_index + 1) = vy; - *(vertex_origin + vertex_index + 2) = vz - eps; + *(vertex_origin + vertex_index + 2) = vz - a_third; vertex_index += 3; @@ -723,6 +723,89 @@ static bool arrows_anchors (long x, long y, long z, colors_index += 3; + //-------------------------------------------------------------- + + // X - X axis arrows tips near the faces centers EAST - WEST + + *(vertex_origin + vertex_index + 0) = vx + ad - eps; + *(vertex_origin + vertex_index + 1) = vy; + *(vertex_origin + vertex_index + 2) = vz; + + vertex_index += 3; + + *(vertex_origin + vertex_index + 0) = vx - ad + eps; + *(vertex_origin + vertex_index + 1) = vy; + *(vertex_origin + vertex_index + 2) = vz; + + vertex_index += 3; + + *(colors_origin + colors_index + 0) = 0; + *(colors_origin + colors_index + 1) = 0; + *(colors_origin + colors_index + 2) = 0; + + colors_index += 3; + + *(colors_origin + colors_index + 0) = 0; + *(colors_origin + colors_index + 1) = 0; + *(colors_origin + colors_index + 2) = 0; + + colors_index += 3; + + + // Y - Y axis arrows tips near the faces centers ZENITH - NADIR + + *(vertex_origin + vertex_index + 0) = vx; + *(vertex_origin + vertex_index + 1) = vy + ad - eps; + *(vertex_origin + vertex_index + 2) = vz; + + vertex_index += 3; + + *(vertex_origin + vertex_index + 0) = vx; + *(vertex_origin + vertex_index + 1) = vy - ad + eps; + *(vertex_origin + vertex_index + 2) = vz; + + vertex_index += 3; + + *(colors_origin + colors_index + 0) = 0; + *(colors_origin + colors_index + 1) = 0; + *(colors_origin + colors_index + 2) = 0; + + colors_index += 3; + + *(colors_origin + colors_index + 0) = 0; + *(colors_origin + colors_index + 1) = 0; + *(colors_origin + colors_index + 2) = 0; + + colors_index += 3; + + + // Z - Z axis arrows tips near the faces centers NORTH - SOUTH + + *(vertex_origin + vertex_index + 0) = vx; + *(vertex_origin + vertex_index + 1) = vy; + *(vertex_origin + vertex_index + 2) = vz + ad - eps; + + vertex_index += 3; + + *(vertex_origin + vertex_index + 0) = vx; + *(vertex_origin + vertex_index + 1) = vy; + *(vertex_origin + vertex_index + 2) = vz - ad + eps; + + vertex_index += 3; + + *(colors_origin + colors_index + 0) = 0; + *(colors_origin + colors_index + 1) = 0; + *(colors_origin + colors_index + 2) = 0; + + colors_index += 3; + + *(colors_origin + colors_index + 0) = 0; + *(colors_origin + colors_index + 1) = 0; + *(colors_origin + colors_index + 2) = 0; + + colors_index += 3; + + }; @@ -830,11 +913,33 @@ bool compute_space_and_arrows(long model_size_x, long model_size_y, long model_s long s = step_z * model_size_z + step_y * model_size_y + step_x * model_size_x; -// draw_line (lines_origin, s + 5, s + 7); -// draw_line (lines_origin, s + 5, s + 1); draw_line (lines_origin, s + 1, s + 2); draw_line (lines_origin, s + 3, s + 4); draw_line (lines_origin, s + 5, s + 6); + + draw_line (lines_origin, s + 3, s + 7); + draw_line (lines_origin, s + 4, s + 7); + + draw_line (lines_origin, s + 5, s + 7); + draw_line (lines_origin, s + 6, s + 7); + + + draw_line (lines_origin, s + 12 + 1, s + 12 + 2); + draw_line (lines_origin, s + 12 + 3, s + 12 + 4); + draw_line (lines_origin, s + 12 + 5, s + 12 + 6); + + draw_line (lines_origin, s + 12 + 3, s + 12 + 8); + draw_line (lines_origin, s + 12 + 4, s + 12 + 8); + + draw_line (lines_origin, s + 12 + 5, s + 12 + 8); + draw_line (lines_origin, s + 12 + 6, s + 12 + 8); + + if (0) draw_line (lines_origin, s + 1, s + 9); + if (0) draw_line (lines_origin, s + 2, s + 9); + + if (0) draw_line (lines_origin, s + 5, s + 9); + if (0) draw_line (lines_origin, s + 6, s + 9); + printf("lines_index = %ld lines_origin = %ld\n", lines_index, lines_origin); return 0; diff --git a/src/graphics/graphics.c b/src/graphics/graphics.c index c15f9bb..84e7aca 100644 --- a/src/graphics/graphics.c +++ b/src/graphics/graphics.c @@ -51,6 +51,7 @@ int model_space_size_x = 0; int model_space_size_y = 0; int model_space_size_z = 0; int model_arrows_nb = 0; +int nombre_de_cases_contenant_des_fleches = 0; GLfloat *buffer_vertex_origin = NULL; GLfloat *buffer_colors_origin = NULL; @@ -570,9 +571,10 @@ static void get_model_data_and_user_preferences(){ model_space_size_z = 1; // 0 < model_space_size_z // XXX ONLY space drawed, no arrows - model_arrows_nb = 0; // assert : l'emplacement des flèches est contraint + model_arrows_nb = 2; // assert : l'emplacement des flèches est contraint // par model_space_size_x, y, z et le nombre de sites // OLD ARROWS (DEPRECATED) + nombre_de_cases_contenant_des_fleches = 2; // pref_1D_shown_as_3D_xor_2D_space = 0; // 0 = 3D 1 = 2D // pref_1D_shown_as_3D_xor_2D_arrows = 0; // 0 = 3D 1 = 2D @@ -608,9 +610,8 @@ static void compute_buffers_sizes(int model_space_size_x, long arrows_anchors = (model_space_size_x) * (model_space_size_y) * (model_space_size_z) - * (8); // this is to draw the small central star - - // Just now, I remove the six faces centers TODO : * (8 + 6) + * (8 + 6); // 8 is to draw the small central star + // 6 is for the six faces centers long cubes_nb = model_space_size_x * model_space_size_y * model_space_size_z; @@ -634,7 +635,9 @@ static void compute_buffers_sizes(int model_space_size_x, if (pref_test_diagonal) buffer_lines_size += 2; // la diagonale test [0 - max] - buffer_lines_size += 6; // test flèche + buffer_lines_size += 6 * nombre_de_cases_contenant_des_fleches; // test central stars + + buffer_lines_size += 8 * model_arrows_nb; // flèches // if (1) printf("allocated buffers sizes :%4d/3 = %3d vertices, %4d/3 = %3d colors,\ %4d/2 = %3d lines, %4d/3 = %3d plans.\n",