2017-03-24 1 views
1

Voici mon code, apparemment, il ne corrige pas? Existe-t-il un autre moyen de créer un objet dans un emplacement aléatoire sans chevauchement? Merci pour votre temps.Je veux ajouter un vecteur aléatoire à un tableau qui a n éléments.Cependant, je veux une distance entre un nouveau Vertor aléatoire et les éléments dans le tableau> 4f

public ArrayList getVector3f() { 
    boolean lessThan = false; 
    // create first random vector & add it to the list array 
    Vector3f v1 = randVector(); 
    list.add(v1); 
    //num=4; 
    for (int i = 0; i <= num - 2; i++) { 
     vec = randVector(); 

     for (int j = 0; j <= list.size() - 1 ; j++) { 
      if (list.get(j).distance(vec) < 4f) { 
       lessThan = true; 
      } 
     } 
     if (lessThan == true) { 
      vec = randVector(); 
      for (int j = 0; j <= list.size() - 1; j++) { 
       if (list.get(j).distance(vec) < 4f) { 
        lessThan = true; 
       } else { 
        lessThan = false; 
       } 
      } 
     } 
     if (lessThan == false) { 
      list.add(vec); 
      System.out.println(vec); 
     } 
    } 
    return list; 
} 

Répondre

0

Vous semblez avoir "déroulé votre boucle". Essayez ceci (non testé): -

public ArrayList getVector3f() { 
    // create first random vector & add it to the list array 
    Vector3f vec = randVector(); 
    list.add(vec); 

    for (int i = 0; i <= num-2; i++) { 
     boolean lessThan = true; 
     while (lessThan) { 
      lessThan = false; 
      vec = randVector(); 
      for (int j = 0; j < list.size() ; j++) { 
       if (list.get(j).distance(vec) < 4f) { 
        lessThan = true; 
        break; 
       } 
      } 
     } 
     list.add(vec); 
     System.out.println(vec); 
    } 
    return list; 
}