Ich habe eine three.js-Szene erstellt, die eine Ebene enthält, die ein Gitter schneidet. Was ich tun möchte, ist eine Anordnung von Punkten für alle Orte, an denen eine Kante des Gitters die Ebene kreuzt. Ich habe mich nach Lösungen umgesehen und kann scheinbar nichts finden.
Hier ist ein Bild von dem, was ich gerade habe:
Und hier habe ich die Koordinaten hervorgehoben, die ich sammeln möchte:
Wenn mich jemand in die richtige Richtung weisen kann, wäre das sehr zu begrüßen.
Danke,
S
Dies ist nicht die ultimative Lösung. Dies ist nur ein Punkt, wo Sie beginnen können.
UPD: Hier ist eine Erweiterung dieser Antwort, wie man Konturen von gegebenen Punkten.
Es wird auch auf diese SO-Frage mit großartigen Antworten von WestLangley und Lee Stemkoski über die .localToWorld()
-Methode verwiesen THREE.Object3D()
.
Stellen Sie sich vor, Sie möchten Schnittpunkte einer gewöhnlichen Geometrie finden (z. B. THREE.DodecahedronGeometry()
).
Die Idee:
THREE.Plane()
hat die Methode .intersectLine ( line, optionalTarget )
Ein Netz enthält Gesichter ( THREE.Face3()
)
Jede Seite hat a, b, c
Eigenschaften, wo Indizes von Vertices gespeichert sind.
Wenn wir Indizes von Scheitelpunkten kennen, können wir sie aus dem Array von vertices
Wenn wir Koordinaten von Eckpunkten eines Gesichts kennen, können wir drei THREE.Line3()
-Objekte
Wenn wir drei Zeilen haben, können wir überprüfen, ob unsere Ebene sie schneidet.
Wenn wir einen Schnittpunkt haben, können wir ihn in einem Array speichern.
Wiederholen Sie die Schritte 3 bis 7 für jede Seite des Netzes
Einige Erklärung mit Code:
Wir haben plane
, was THREE.PlaneGeometry()
und obj
ist, was THREE.DodecahedronGeometry()
Lassen Sie uns also ein THREE.Plane()
:
Hier sind drei Scheitelpunkte einer beliebigen Fläche von plane
koplanar. Daher können wir mathPlane
aus ihnen mit der Methode .setFromCoplanarPoints()
erstellen.
Dann werden wir die Gesichter von obj
:
wo
%Vor%und
%Vor%Am Ende werden wir unsere Punkte sichtbar machen:
%Vor%jsfiddle Beispiel. Drücken Sie den Knopf dort, um die Schnittpunkte zwischen der Ebene und dem Dodekaeder zu erhalten.
Tags und Links javascript three.js 3d