Kennt jemand einen Algorithmus, der eine Figur wie dieses Bild zulässt?

9

Weiß jemand, wie man einen Algorithmus erstellt, mit dem die Figur genau wie im Bild erstellt werden kann, wenn eine Reihe spezifischer Punkte (3D-Array) angegeben wird?

Geben Sie hier die Bildbeschreibung ein

user88794
quelle
4
Es ist eine Sache, ist es das, wonach Sie suchen: blog.andreaskahler.com/2009/06/…
Luke San Antonio Bialecki
3
@LukeSanAntonio Poste das als Antwort, damit ich es bitte positiv bewerten kann;) (aber nicht nur der Link, eine minimale Erklärung des Algorithmus wäre für eine Antwort notwendig)
yannis
1
@YannisRizos Ich würde, aber ich habe keine Kenntnisse oder Erfahrungen in dieser Art von Dingen, so dass ich Ihnen keine angemessene Erklärung geben konnte (nun, ich könnte, aber andere könnten es viel besser machen). Der einzige Grund, warum ich den Link kannte, ist weil ich den Namen der Form von Blender kannte ( wiki.blender.org/index.php/Doc:2.4/Manual/Modeling/Meshes/… )
Luke San Antonio Bialecki
Das Erstellen des Schattens aus einem 3D-Objekt erfolgt täglich. Überprüfen Sie die Schattenzuordnung und das Schattenvolumen. Es stehen jedoch weitere Algorithmen zur Schattenerstellung zur Verfügung
Ratschenfreak
Es ist nicht der Schatten, den ich erschaffen möchte, es ist das physische Objekt. Wir werden es in 3D drucken.
user88794

Antworten:

5

Nach dem Kampf hierher zu kommen, aber da es noch keine akzeptierte Antwort gibt und zu sehen ist, dass @Luke sich weigert, den Repräsentanten zu bekommen, den er verdient, hier eine kurze Zusammenfassung des Links, den er bereitgestellt hat.

Der vollständige Algorithmus ist also hier verfügbar:

http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html

Die Idee ist, Ihr Netz mit einer einfachen Methode zu booten, die Ihnen eine Kugel mit 20 Flächen gibt, und diese dann zu verfeinern, bis Sie zufrieden sind.

Bootstrapping der Form

Sie beginnen mit einem Ikosaeder . Wie der Wikipedia-Artikel sagt, können Sie die Eckpunkte erhalten, indem Sie drei identische und orthogonale Rechtecke zeichnen. Sie haben 3 Rechtecke mit jeweils 4 Ecken -> 12 Eckpunkte.

Wikipedia Abbildung:

Ikosaeder

Zum Beispiel sind die Z-Planpunkte (a, b sind die Rechtecklängen):

  • (+ a, + b, 0)
  • (-a, + b, 0)
  • (+ a, -b, 0)
  • (-a, -b, 0)

Jetzt müssen Sie noch die 20 Gesichter finden. Dies bleibt dem Leser als Übung überlassen: p

Die Form verfeinern

Nachdem Sie eine grundlegende Kugel haben, möchten Sie möglicherweise Polygone hinzufügen. Sie tun dies mit diesem einfachen Algorithmus:

for each iteration:
    # each iteration multiplies by 4 the number of faces
    for each edge at the current iteration:
        split the edge in two
        replace the middle point on the sphere

Um den Mittelpunkt zu finden, nehmen wir an, dass wir die Einheitskugel (Mittelpunkt (0, 0, 0), Radius 1) erstellen möchten.

middlePoint(p1, p2):
    middle = Point((p1.X + p2.X / 2), # same for y, z)
    radius = sqrt(middle.X^2, middle.Y^2, middle.Z^2)
    return Point(middle.X / radius,  # same for y, z)

Bei jeder Iteration müssen wir möglicherweise die Gesichter rekonstruieren, aber es ist ziemlich einfach. Jedes Gesicht ist in vier Teile unterteilt:

Gesicht verfeinern

Simon Bergot
quelle