delta = 2 + 3 + 61 + 83 + 87 + 67 + 23 - 45 - 137 - 253 - 393 - 557 - 745 - 957 - 1193 - 1453 - 1737 - 2045 - 2377 - 2733 - 3113 - 3517 --- ------------------------------------------ côté dérivée_1 dérivée_2 c (1) (d1) (d2) ------------------------------------------ 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 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 37 2733 - 2377 = 356 356 - 332 = 24 39 3113 - 2733 = 380 380 - 356 = 24 41 3517 - 3113 = 404 404 - 380 = 24 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).