2023-08-23 21:45:19 +02:00
|
|
|
delta = 2 + 3 + 61 + 83 + 87 + 67 + 23
|
|
|
|
- 45 - 137 - 253 - 393 - 557 - 745
|
2023-08-24 14:12:46 +02:00
|
|
|
- 957 - 1193 - 1453 - 1737 - 2045
|
|
|
|
- 2377 - 2733 - 3113 - 3517 ---
|
|
|
|
|
2023-08-23 21:45:19 +02:00
|
|
|
------------------------------------------
|
|
|
|
côté dérivée_1 dérivée_2
|
|
|
|
c (1) (d1) (d2)
|
|
|
|
------------------------------------------
|
2023-08-24 14:12:46 +02:00
|
|
|
1 -4 - 72 = -76 -76 --100 = 24
|
|
|
|
3 -56 - -4 = -52 -52 - -76 = 24
|
|
|
|
5 -84 - -56 = -28 -28 - -52 = 24
|
|
|
|
7 -88 - -84 = -4 -4 - -28 = 24
|
|
|
|
9 -68 - -88 = 20 20 - -4 = 24
|
|
|
|
11 -23 - -68 = 44 44 - 20 = 24
|
2023-08-23 21:45:19 +02:00
|
|
|
13 45 - -23 = 68 68 - 44 = 24
|
|
|
|
15 137 - 45 = 92 92 - 68 = 24
|
|
|
|
17 253 - 137 = 116 116 - 92 = 24
|
|
|
|
19 393 - 253 = 140 140 - 116 = 24
|
|
|
|
21 557 - 393 = 164 164 - 140 = 24
|
|
|
|
23 745 - 557 = 188 188 - 164 = 24
|
|
|
|
25 957 - 745 = 212 212 - 188 = 24
|
|
|
|
27 1193 - 957 = 236 236 - 212 = 24
|
|
|
|
29 1453 - 1193 = 260 260 - 236 = 24
|
|
|
|
31 1737 - 1453 = 284 284 - 260 = 24
|
|
|
|
33 2045 - 1737 = 308 308 - 284 = 24
|
|
|
|
35 2377 - 2045 = 332 332 - 308 = 24
|
2023-08-24 14:12:46 +02:00
|
|
|
37 2733 - 2377 = 356 356 - 332 = 24
|
|
|
|
39 3113 - 2733 = 380 380 - 356 = 24
|
|
|
|
41 3517 - 3113 = 404 404 - 380 = 24
|
2023-08-23 21:45:19 +02:00
|
|
|
|
|
|
|
Pour calculer l'adresse mémoire des trois lignes
|
|
|
|
qui dessinnent l'étoile située au centre d'un cube
|
|
|
|
de côté 'c' il faut faire la somme des quatre termes :
|
|
|
|
- coeff_1 = step_z * space_Z + step_y * space_Y + step_x * space_X
|
|
|
|
- coeff_2 = (i * step_x + j * step_y + k * step_z) * 6
|
|
|
|
- center = space_X * space_Y * space_Z / 2 et
|
|
|
|
- delta = sigma (de 1 à c) des termes de la colonne 1
|
|
|
|
|
|
|
|
draw_a_central_star (lines_origin, coeff_1 + center + coeff_2 + delta)
|
|
|
|
|
|
|
|
static void draw_a_central_star(GLuint *lines_origin, int n)
|
|
|
|
{
|
|
|
|
draw_line (lines_origin, n + 0, n + 1);
|
|
|
|
draw_line (lines_origin, n + 2, n + 3);
|
|
|
|
draw_line (lines_origin, n + 4, n + 5);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void draw_line (GLuint *lines_origin, int a, int b)
|
|
|
|
{
|
|
|
|
*(lines_origin + lines_index) = a; lines_index ++;
|
|
|
|
*(lines_origin + lines_index) = b; lines_index ++;
|
|
|
|
}
|
|
|
|
|
|
|
|
On calcule le dernier terme de 'delta' en connaissant
|
|
|
|
sa différence avec le terme précédent de la colonne (1).
|
|
|
|
|
|
|
|
On calcule cette différence (d1) en ajoutant 24
|
|
|
|
au terme précédent de la colonne (d1).
|