Ich erstelle eine zufällig generierte Umgebung für ein Spiel, das ich entwickle. Ich benutze OpenGLund codiere in Java.
Ich versuche, zufällig Bäume in meiner Welt zu platzieren (um einen Wald zu erstellen), aber ich möchte nicht, dass sich die Modelle überlappen (was passiert, wenn zwei Bäume zu nahe beieinander stehen). Hier ist ein Bild von dem, wovon ich spreche:
Ich kann bei Bedarf mehr Code bereitstellen, aber hier sind die wesentlichen Ausschnitte. Ich lagere meine Objekte in einem ArrayListmit List<Entity> entities = new ArrayList<Entity>();. Ich füge dieser Liste dann Folgendes hinzu:
Random random = new Random();
for (int i = 0; i < 500; i++) {
entities.add(new Entity(tree, new Vector3f(random.nextFloat() * 800 - 400,
0, random.nextFloat() * -600), 0, random.nextFloat() * 360, 0, 3, 3, 3);
}
Dabei Entityfolgt jeder der folgenden Syntax:
new Entity(modelName, positionVector(x, y, z), rotX, rotY, rotZ, scaleX, scaleY, scaleZ);
rotXist die Drehung entlang der x-Achse und scaleXist die Skala in x-Richtung usw.
Sie können sehen , dass ich diese Bäume zufällig bin Platzierung random.nextFloat()für die xund zPositionen, und begrenzen den Bereich , so dass die Bäume in der gewünschten Position angezeigt werden. Ich möchte diese Positionen jedoch irgendwie steuern, sodass beim Versuch, einen Baum zu nahe an einem zuvor platzierten Baum zu platzieren, eine neue zufällige Position neu berechnet wird. Ich dachte, dass jeder Baum Entityein anderes Feld haben könnte, wie zum Beispiel treeTrunkGirth, und wenn ein Baum in der Entfernung zwischen dem Standort eines anderen Baums und treeTrunkGirthseinem Platz platziert wird, berechnet er eine neue Position neu. Gibt es eine Möglichkeit, dies zu erreichen?
Gerne füge ich bei Bedarf weitere Codefragmente und Details hinzu.
treeTrunkGirthanstelle einer Konstante auch den Mindestabstand zum Platzieren eines Baums, wenn dieser variieren muss.

