WIP: une ébauche 2D avec plusieurs flèches

This commit is contained in:
Jean Sirmai 2023-07-04 12:29:13 +02:00
parent 02bc747ad3
commit 1104459617
Signed by: jean
GPG Key ID: FB3115C340E057E3
2 changed files with 36 additions and 13 deletions

View File

@ -50,6 +50,8 @@ int plans_ndx = 0;
#define EDGE 0.999999
#define S2 0
#define L 0
#define V 1
static bool compute_space_2D(int space_size_x,
int space_size_y,
int space_size_z,
@ -86,6 +88,7 @@ static bool compute_space_2D(int space_size_x,
*(vertex_origin + k * 6 + 5) = 0.0f;
vertex_ndx += 6;
if (V) printf(" => vertex_ndx = %d\n", vertex_ndx);
*(color_origin + k * 6 + 0) = 1;
*(color_origin + k * 6 + 1) = 0;
@ -101,6 +104,7 @@ static bool compute_space_2D(int space_size_x,
*(line_origin + k * 2 + 1) = k * 2 + 1;
lines_ndx += 2;
if (L) printf(" => lines_ndx = %d\n", lines_ndx);
}
*(color_origin + 0) = 0;
@ -128,25 +132,32 @@ static bool compute_space_2D(int space_size_x,
*(line_origin + lines_ndx + 3) = space_size_x * 2 - 1; // barre horizontale du haut
lines_ndx += 4;
if (L) printf("H=> lines_ndx = %d\n", lines_ndx);
if (pref_mark_unit_space == 1 || pref_mark_unit_space == 3) // diagonales to mark first space unit
{
*(line_origin + lines_ndx + 0) = 0;
*(line_origin + lines_ndx + 1) = 3;
*(line_origin + lines_ndx + 2) = 1;
*(line_origin + lines_ndx + 3) = 2;
lines_ndx += 4;
if (L) printf("X=> lines_ndx = %d\n", lines_ndx);
}
if (pref_mark_unit_space == 2 || pref_mark_unit_space == 3) // diagonales to mark last space unit
{
*(line_origin + lines_ndx + 0) = (space_size_x - 2) * 2 + 0;
*(line_origin + lines_ndx + 1) = (space_size_x - 2) * 2 + 3;
*(line_origin + lines_ndx + 2) = (space_size_x - 2) * 2 + 1;
*(line_origin + lines_ndx + 3) = (space_size_x - 2) * 2 + 2;
lines_ndx +=4;
if (L) printf("X=> lines_ndx = %d\n", lines_ndx);
}
if (S2) printf(" n = %d x 2 côté = [%1.1f]\n", space_size_x + 1, 2.0f / space_size_x);
@ -182,12 +193,14 @@ static int compute_arrow_2D(int space_size_x,
int buffer_lines_size,
int buffer_plans_size)
{
printf("compute_arrow_2D load = %d site = %d x = %d\n", weight, site, x);
float zero = 0.0f;
float center = (1.0f / space_size_x) * (2 * x - space_size_x + 2);
// float tip = center + (2 * site - 1) * (1.0f / space_size_x);
float tip = center + (2 * site - 1) * (1.0f / space_size_x);
tip = center + (2 * site - 1) * (1.0f / space_size_x - 0.01f);
float base = center + (2 * site - 1) * (0.1f / space_size_x);
*(vertex_origin + vertex_ndx + 0) = center + (2 * site - 1) * (1.0f / space_size_x - 0.01f);
*(vertex_origin + vertex_ndx + 0) = tip;
*(vertex_origin + vertex_ndx + 1) = zero;
*(vertex_origin + vertex_ndx + 2) = zero;
@ -200,19 +213,23 @@ static int compute_arrow_2D(int space_size_x,
*(vertex_origin + vertex_ndx + 8) = zero;
vertex_ndx += 9;
if (V) printf(" => vertex_ndx = %d\n", vertex_ndx);
if (pref_style_lines_planes == 0) {
*(line_origin + lines_ndx + 0) = vertex_ndx / 3 + 0;
*(line_origin + lines_ndx + 1) = vertex_ndx / 3 + 1;
if (V) printf("0=> lines_ndx = %d\n", lines_ndx);
*(line_origin + lines_ndx + 2) = vertex_ndx / 3 + 0;
*(line_origin + lines_ndx + 3) = vertex_ndx / 3 + 2;
*(line_origin + lines_ndx + 0) = vertex_ndx / 3 - 3;
*(line_origin + lines_ndx + 1) = vertex_ndx / 3 - 2;
*(line_origin + lines_ndx + 4) = vertex_ndx / 3 + 1;
*(line_origin + lines_ndx + 5) = vertex_ndx / 3 + 2;
*(line_origin + lines_ndx + 2) = vertex_ndx / 3 - 3;
*(line_origin + lines_ndx + 3) = vertex_ndx / 3 - 1;
*(line_origin + lines_ndx + 4) = vertex_ndx / 3 - 2;
*(line_origin + lines_ndx + 5) = vertex_ndx / 3 - 1;
lines_ndx += 6;
if (V) printf("|=> lines_ndx = %d\n", lines_ndx);
}
@ -274,6 +291,9 @@ static bool compute_space_3D (int space_size_x,
*(vertex_origin + k * 12 + 10) = - 1.0f / space_size_x;
*(vertex_origin + k * 12 + 11) = 1.0f / space_size_x;
vertex_ndx += 12;
if (V) printf(" => vertex_ndx = %d\n", vertex_ndx);
*(color_origin + k * 12 + 0) = 1; // 1 - (k / space_size_x);
*(color_origin + k * 12 + 1) = 0;
*(color_origin + k * 12 + 2) = 0;
@ -453,6 +473,9 @@ static bool compute_arrow_3D(int space_size_x,
*(vertex_origin + vgap + 13) = - 0.4f / space_size_x;
*(vertex_origin + vgap + 14) = 0.4f / space_size_x;
vertex_ndx += 15;
if (V) printf(" => vertex_ndx = %d\n", vertex_ndx);
if (A3) printf("center = %f tip = %f base = %f\n",\
center, tip, base); // vgap=%d igap=%d
@ -619,11 +642,11 @@ bool compute_space_and_arrows(int model_space_size_x,
// arrows = { 1, 1, 0, 1, 2, 1, 1, 1, 10, 1, 2, 11, 1, 1, 20, 1, 2, 21 }
if (SA) for (int i = 0; i < model_arrows_nb; i++) {
if (SA) for (int i = 0; i < model_arrows_nb; i++)
printf("[%2d] = %2d, %2d, %2d \n",\
i, *(arrows + i * 3), *(arrows + i * 3 + 1), *(arrows + i * 3 + 2));
if (pref_3D_xor_2D_arrows) compute_arrow_2D(model_space_size_x,
for (int i = 0; i < model_arrows_nb; i++) if (pref_3D_xor_2D_arrows) compute_arrow_2D(model_space_size_x,
model_space_size_y,
model_space_size_z,
@ -682,7 +705,7 @@ bool compute_space_and_arrows(int model_space_size_x,
/* compute_arrow_3D(entry, model_space_size_x, vgap, igap, 1, 0, model_space_size_x - 2, 0, 0); vgap += 15; igap += 16; cgap += 15; ++model_arrows_nb; */
/* compute_arrow_3D(entry, model_space_size_x, vgap, igap, 1, 1, model_space_size_x - 2, 0, 0); vgap += 15; igap += 16; cgap += 15; ++model_arrows_nb; */
}
return 0;
}

View File

@ -525,8 +525,8 @@ bool graphics_init_shaders(const void *gl_area)
static void get_model_data_and_user_preferences(){
model_space_size_x = 6; // 2 < model_space_size_x < 32
model_arrows_nb = 1; // assert : l'emplacement des flèches est contraint
model_space_size_x = 8; // 2 < model_space_size_x < 32
model_arrows_nb = 6; // assert : l'emplacement des flèches est contraint
// par model_space_size_x, y, z et le nombre de sites
pref_3D_xor_2D_space = 1; // 0 = 3D 1 = 2D
pref_3D_xor_2D_arrows = 1; // 0 = 3D 1 = 2D