WIP: deux listes arrows (init & current)? probable fausse route
This commit is contained in:
parent
7b76a54756
commit
babdaca5b7
|
@ -100,67 +100,67 @@ void arrows_write_terminations (long x, long y, long z)
|
|||
}
|
||||
|
||||
/*
|
||||
* Writes lines for arrow oriented to the east or west into lines buffer
|
||||
* Writes edges for arrows oriented toward east or west into lines buffer
|
||||
*
|
||||
* @param s,
|
||||
* @param offset,
|
||||
* weight,
|
||||
* site
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void write_arrow_lines_east_west (long s, int weight, int site)
|
||||
void write_arrow_lines_east_west (long offset, int weight, int site)
|
||||
{
|
||||
graphics_write_line (s + 2, s + 6 + site % 2);
|
||||
graphics_write_line (s + 3, s + 6 + site % 2);
|
||||
graphics_write_line (s + 4, s + 6 + site % 2);
|
||||
graphics_write_line (s + 5, s + 6 + site % 2);
|
||||
graphics_write_line (offset + 2, offset + 6 + site % 2);
|
||||
graphics_write_line (offset + 3, offset + 6 + site % 2);
|
||||
graphics_write_line (offset + 4, offset + 6 + site % 2);
|
||||
graphics_write_line (offset + 5, offset + 6 + site % 2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Writes lines for arrow oriented to the zenith or nadir into lines buffer
|
||||
* Writes edges for arrows oriented toward zenith or nadir into lines buffer
|
||||
*
|
||||
* @param s,
|
||||
* @param offset,
|
||||
* weight,
|
||||
* site
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void write_arrow_lines_zenith_nadir (long s, int weight, int site)
|
||||
void write_arrow_lines_zenith_nadir (long offset, int weight, int site)
|
||||
{
|
||||
graphics_write_line (s + 0, s + 8 + site % 2);
|
||||
graphics_write_line (s + 1, s + 8 + site % 2);
|
||||
graphics_write_line (s + 4, s + 8 + site % 2);
|
||||
graphics_write_line (s + 5, s + 8 + site % 2);
|
||||
graphics_write_line (offset + 0, offset + 8 + site % 2);
|
||||
graphics_write_line (offset + 1, offset + 8 + site % 2);
|
||||
graphics_write_line (offset + 4, offset + 8 + site % 2);
|
||||
graphics_write_line (offset + 5, offset + 8 + site % 2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Writes lines for arrow oriented to the south or north into lines buffer
|
||||
* Writes edges for arrows oriented toward south or north into lines buffer
|
||||
*
|
||||
* @param s,
|
||||
* @param offset,
|
||||
* weight,
|
||||
* site
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void write_arrow_lines_south_north (long s, int weight, int site)
|
||||
void write_arrow_lines_south_north (long offset, int weight, int site)
|
||||
{
|
||||
graphics_write_line (s + 0, s + 10 + site % 2);
|
||||
graphics_write_line (s + 1, s + 10 + site % 2);
|
||||
graphics_write_line (s + 2, s + 10 + site % 2);
|
||||
graphics_write_line (s + 3, s + 10 + site % 2);
|
||||
graphics_write_line (offset + 0, offset + 10 + site % 2);
|
||||
graphics_write_line (offset + 1, offset + 10 + site % 2);
|
||||
graphics_write_line (offset + 2, offset + 10 + site % 2);
|
||||
graphics_write_line (offset + 3, offset + 10 + site % 2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Writes lines for arrow basis into lines buffer
|
||||
* Writes lines drawing arrows bases into lines buffer
|
||||
*
|
||||
* @param n
|
||||
* @param offset
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void arrows_write_basis(long n)
|
||||
void arrows_write_basis(long offset)
|
||||
{
|
||||
graphics_write_line (n + 0, n + 1);
|
||||
graphics_write_line (n + 2, n + 3);
|
||||
graphics_write_line (n + 4, n + 5);
|
||||
graphics_write_line (offset + 0, offset + 1);
|
||||
graphics_write_line (offset + 2, offset + 3);
|
||||
graphics_write_line (offset + 4, offset + 5);
|
||||
}
|
||||
|
||||
|
|
|
@ -50,14 +50,15 @@ static int buffer_plans_size = 0;
|
|||
|
||||
// assert : l'emplacement des flèches est contraint
|
||||
// par model_space_size_x, y, z et le nombre de sites
|
||||
static GLuint arrows[] = {
|
||||
static GLuint arrows[] = {};
|
||||
static GLuint arrows_init[] = {
|
||||
1, 0, 0, 0, 0,
|
||||
1, 1, 1, 0, 0,
|
||||
1, 1, 0, 0, 0,
|
||||
1, 2, 0, 0, 0,
|
||||
1, 3, 0, 0, 0,
|
||||
1, 4, 0, 0, 0,
|
||||
1, 5, 0, 0, 0,
|
||||
/* 1, 1, 0, 0, 0, */
|
||||
/* 1, 2, 0, 0, 0, */
|
||||
/* 1, 3, 0, 0, 0, */
|
||||
/* 1, 4, 0, 0, 0, */
|
||||
/* 1, 5, 0, 0, 0, */
|
||||
// load, site, x, y, z
|
||||
};
|
||||
|
||||
|
@ -66,6 +67,11 @@ static int get_arrows_nb(){
|
|||
else return sizeof(arrows) / sizeof(arrows[0]) / 5;
|
||||
}
|
||||
|
||||
static int get_arrows_init_nb(){
|
||||
if (sizeof(arrows_init) == 0) return 0;
|
||||
else return sizeof(arrows_init) / sizeof(arrows_init[0]) / 5;
|
||||
}
|
||||
|
||||
static void show_user_choices(int space_size_x,
|
||||
int space_size_y,
|
||||
int space_size_z,
|
||||
|
@ -95,7 +101,7 @@ static void get_model_data_and_user_preferences()
|
|||
show_user_choices(model_space_size_x, model_space_size_y, model_space_size_z,
|
||||
pref_show_grids);
|
||||
|
||||
// set_arrow(arrows, 1, 1, 1, 0, 0);
|
||||
// set_arrow(1, 3, 1, 0, 0);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
@ -120,8 +126,8 @@ static bool create_arrow (int weight, int site, int x, int y, int z)
|
|||
{
|
||||
int arrows_nb = get_arrows_nb();
|
||||
arrows_nb ++;
|
||||
buffer_lines_size += (3 + 4) * 2;
|
||||
buffer_lines_origin = g_realloc(buffer_lines_origin, buffer_lines_size * 2 * sizeof(GLuint));
|
||||
buffer_lines_size += (3 + 4) * 8 * sizeof(GLuint);
|
||||
buffer_lines_origin = g_realloc(buffer_lines_origin, buffer_lines_size);
|
||||
|
||||
if (1) printf("create a new arrow with weight = %d at (%d, %d, %d, %d)\n",\
|
||||
weight, site, x, y, z);
|
||||
|
@ -190,12 +196,13 @@ static int check_for_arrow (int weight, int site, int x, int y, int z)
|
|||
static void show_arrows_array (int address, int weight, int site, int x, int y, int z)
|
||||
{
|
||||
int arrows_nb = get_arrows_nb();
|
||||
int arrows_init_nb = get_arrows_init_nb();
|
||||
printf("\n [ n] load | site x y z ----- < arrows_nb = %d > ------", arrows_nb);
|
||||
if (arrows_nb == 0) printf("--------------------------- no arrows\n");
|
||||
else if (address == -1) printf("--------------------------- create new arrow\n");
|
||||
else printf("--------------------------- erase arrow at address = %d / 5\n", address);
|
||||
|
||||
for (int i = 0; i < arrows_nb; i++)
|
||||
for (int i = 0; i < arrows_init_nb; i++)
|
||||
{
|
||||
printf(" [%2d] = %2d | %2d, %2d, %2d, %2d ",\
|
||||
i, *(arrows + i * 5 + 0), *(arrows + i * 5 + 1), *(arrows + i * 5 + 2),\
|
||||
|
@ -216,10 +223,10 @@ static void show_arrows_array (int address, int weight, int site, int x, int y,
|
|||
static int set_arrow (int weight, int site, int x, int y, int z)
|
||||
{
|
||||
int address = (check_for_arrow (weight, site, x, y, z));
|
||||
show_arrows_array(address, weight, site, x, y, z);
|
||||
// show_arrows_array(address, weight, site, x, y, z);
|
||||
|
||||
if (address == -1 && weight == 0) return 0;
|
||||
if (address == -1 && weight > 0) return create_arrow (weight, site, x, y, z);
|
||||
// if (address == -1 && weight > 0) return create_arrow (weight, site, x, y, z);
|
||||
if (address >= 0 && weight == 0) return erase_arrow (address, site, x, y, z);
|
||||
if (address >= 0 && weight > 0) return rewrite_arrow (address, weight, site, x, y, z);
|
||||
|
||||
|
@ -790,16 +797,16 @@ void main_test_graphics (void)
|
|||
/* ARROWS */
|
||||
arrows_write_terminations (x, y, z);
|
||||
|
||||
int arrows_nb = get_arrows_nb(), cube_coord = 0;
|
||||
int arrows_init_nb = get_arrows_init_nb(), cube_coord = 0;
|
||||
|
||||
for (int i = 0; i < arrows_nb; i++) {
|
||||
weight = arrows[i * 5 + 0];
|
||||
site = arrows[i * 5 + 1];
|
||||
x = arrows[i * 5 + 2];
|
||||
y = arrows[i * 5 + 3];
|
||||
z = arrows[i * 5 + 4];
|
||||
for (int i = 0; i < arrows_init_nb; i++) {
|
||||
weight = arrows_init[i * 5 + 0];
|
||||
site = arrows_init[i * 5 + 1];
|
||||
x = arrows_init[i * 5 + 2];
|
||||
y = arrows_init[i * 5 + 3];
|
||||
z = arrows_init[i * 5 + 4];
|
||||
|
||||
set_arrow (weight, site, x, y, z);
|
||||
// set_arrow (weight, site, x, y, z);
|
||||
|
||||
cube_coord = 12 * (stx * x + sty * y + stz * z);
|
||||
arrow_offset = offset_after_grids + cube_coord;
|
||||
|
@ -820,7 +827,10 @@ void main_test_graphics (void)
|
|||
difference, difference, difference / 12);
|
||||
if (0) printf("main_test_graphics [ok]\n");
|
||||
if (1) printf("\n Et maintenant, il faut distinguer les arrows-data des arrows-en-place\n\
|
||||
[to be] vs. [done]\n\n");
|
||||
[to be] vs. [done]\n");
|
||||
if (1) printf("\n Et donc... Les flèches sont dessinées dans main_test_graphics()\n\
|
||||
et pas dans set_arrow (weight, site, x, y, z);\n\
|
||||
(qui sert à quoi ? au fait ... ) \n\n");
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue