2017-02-09 2 views
-1

Ich versuche, ein OpenGL-Mesh, das ich habe, zu nehmen und gebe ihm eine zufällige Position innerhalb eines Raumes. Ich habe derzeit diese Codezeile:Wie generiert man zufällige Positionen für Meshes?

positions[i] = glm::vec3(rand() % 10 - 1, rand() % 10 - 1, rand() % 10 - 1); 

die nur eine zufällige Position erzeugt (x, y und z). Ich bin mir jedoch nicht ganz sicher, was das '% 10 - 1' macht, seit dieses Code-Snippet online benutzt wurde. Ich kann die Zahlen ändern und das Mesh bewegt sich in der Szene, aber ich bin mir nicht ganz sicher, wie die Zahlen es beeinflussen.

Wie kann ich die Linie so bearbeiten, dass die Netze nicht zu nahe beieinander liegen und alle in den Raum passen (ich weiß, dass Sie die Abmessungen/Position des Raums nicht kennen, so wäre eine Erklärung sehr hilfreich).

+0

zufällige Positionen in einem Netz sind nicht verschieden von anderen Zufallszahlen. Sie werden Tonnen von Fragen/Antworten darauf finden. Versuchen Sie nach '' zu suchen, da 'rand()' nicht das beste ist rng – user463035818

Antwort

2

Dieser Teil rand()% 10 - 1: rand() ist Zufallszahlengenerator. % ist Modulo-Operation. Im Grunde erzeugt rand()% 10 alle Zahlen im Bereich [0,9]. Jetzt ändert rand()% 10 - 1 den Bereich auf [-1,8].

Wie kann ich die Linie so bearbeiten, dass die Maschen nicht zu nahe beieinander liegen und alle in den Raum passen (ich weiß, dass Sie die Abmessungen/Position des Raums nicht kennen, so wäre eine Erklärung sehr hilfreich).

Ändern Sie einfach 10 auf den maximalen Wert Ihrer Dimensionen.

+0

Perfekt, nur die Erklärung, die ich brauchte, danke. Gibt es einen guten Weg, um sicherzustellen, dass Netze nicht zu nahe beieinander stehen? Meine Meshes haben Kollisionsboxen für die Physik, deshalb möchte ich Überlappungen vermeiden. –

+0

Sie können eine HashMap oder etwas zum Speichern der Koordinate verwenden. Wenn Sie also dieselbe Koordinate erhalten haben, die Sie bereits gesehen haben, generieren Sie die Werte erneut, bis Sie eine neue Koordinate erhalten. Nun können Sie nicht sicherstellen, dass Meshes nicht Positionen gegeben werden, weil es ein Zufallsgenerator ist. – vk3105

Verwandte Themen