Stocker des coordonées généré aléatoirment( x y et z) dans un tableau (en java)
Bonjour,
je suis débutante en java. Le but du programme que je réalise est de générer aléatoirement des objets (cylindres) dans un cube avec des conditions de non recouvrement. je cherche donc à stocker les coordonnées de ces objets dans un tableau ( 3 colonnes et cnum lignes, cnum étant le nombre de cylindres).
je cherche à stocker les valeurs hx,hy et hz du programme ci-dessous.
voici le début du programme qui génère les objets :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int cnum = 100; // 100 cylindres sont crées
int ind = 0;
double hx, hy, hz = 0.0;
int Lc = 177;
double hc = 17.5;
double dx = 500.0;
double dy = 500.0;
double dz = 500.0;
double esp = 10.0;
while (ind < cnum) {
hx = Math.random()*(dx-Lc);
hy = Math.random()*(dy-hc-esp);
hz = Math.random()*(dz-hc-esp);
if (hx > (dx-esp)) {continue; }
if ((hy-hc) < esp) {continue; }
if ((hz-hc) < esp) {continue; }
ind++;
} |
Merci pour votre aide
calculer la norme des vecteurs du tableau
Bonjour,
Mercii pour votre réponse rapide! ça marche
J'ai stocker l'ensemble de mes coordonnées dans le tableau.
je souhaite maintenant calculer les normes de tous les vecteurs possibles. je m'explique par exemple pour 3 objets j'ai hx1,hy1,hz1-hx2,hy2,hz2 et hx3,hy3,hz3.
je dois calculer la norme du vecteur 1, V1= Math.sqrt(Math.pow(hx1-hx2,2)+Math.pow(hy1-hy2,2)+Math.pow(hx1-hx2,2)+Math.pow(hz1-hz2,2))
et du vecteur 2 V2= Math.sqrt(Math.pow(hx2-hx3,2)+Math.pow(hy2-hy3,2)+Math.pow(hx2-hx3,2)+Math.pow(hz2-hz3,2))
j'impose une condition sur les vecteurs V1 et V2<Lc/2 (condition de non recouvrement).
Dans matlab je sais qu'on peut utiliser la commande ifany pour résoudre le problème mais en Java?
Dans le code suivant la seule chose que j'arrive a calculer c'est la norme entre le 1er objets et les autres (1 à n), j'aimerais savoir comment peut-on calculer la norme de toutes les combinaison possibles de vecteur pour n objets (cnum=20 dans le code)
Merci
Code:
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
| int cnum = 20; // 20 cylindres sont crées
int ind = 0;
double hx, hy, hz = 0.0;
int Lc = 177;
double hc = 17.5;
double dx = 500.0;
double dy = 500.0;
double[][] data = new double[cnum][];
// création de la première coordonée
double h1x = Math.random()*(dx-Lc);
double h1y = Math.random()*(dy-hc-esp);
double h1z = Math.random()*(dz-hc-esp);
double dz = 500.0;
double esp = 10.0;
while (ind < cnum) {
hx = Math.random()*(dx-Lc);
hy = Math.random()*(dy-hc-esp);
hz = Math.random()*(dz-hc-esp);
double V=Math.sqrt(Math.pow(hx1-hx,2)+Math.pow(hy1-hy,2)+Math.pow(hx1-hx,2)+Math.pow(hz1-hz,2)) // cette ligne est-elle exacte ? je pense qu'elle sert à calculer la norme entre le 1 objet de coordonnée hx1,hy1 et hz1 et les autres il manque tous les autres vecteurs.
if (V < Lc/2) {continue; }
if (hx > (dx-esp)) {continue; }
if ((hy-hc) < esp) {continue; }
if ((hz-hc) < esp) {continue; }
// du coup je ne sais pas si j'ai besoin de ces lignes ?
data[ind][0] = hx;
data[ind][1] = hy;
data[ind][2] = hz;
data[ind] = new double[]{ hx, hy, hz};
ind++;
} |