Bonjour,

Je cherche à déterminer les points qui compose une sphère voici ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
std::vector<char> MaClasse::generateSphere(float diametre, float orgX, float orgY, float orgZ)
{
    std::vector<char> liste;
    char inSphere;
    int y, z;
	/*		y
	 * 		|_x
	 * 	       /
	 * 	     z
	 * */
 
    for(int x = orgX; x < diametre; x = x + 2)
    {
        for(y = orgY; y < diametre; y = y + 2)
        {
            for(z = orgZ; z < diametre; z = z + 2)
            {
		inSphere = isInSphere(diametre, abs(orgX - x), abs(orgY - y), abs(orgZ - z));
		liste.push_back(inSphere); // 0 ou 1
            }
        }
    }
 
    return liste;
}
 
char MaClasse::isInSphere(float diametre, float x, float y, float z)
{
    return square(x) + square(y) + square(z) <= square(diametre);
}
Lorsque je lance l’exécution avec un diamètre de 10 000 000 (pas de restriction sur le temps de calcul), j'obtiens l'exception std::bad_alloc...

Comment puis je faire pour obtenir tous mes points ?

Merci

Ps : J'ai essayé d'obtenir que le quart de ma sphère et ensuite effectué une symétrie,mais j'ai la même exception qui se lève...