Registriert: Di Mai 14, 2002 21:07 Beiträge: 70 Wohnort: Heilbronn/Neckar
Hi,
ich hab folgendes Problem:
Ich möchte, beispielsweise in einem Zylinder, herausfinden, welche Vertices eine Ebene teilen. Also, welche Vertices sich abdecken.
Wie mache ich das genau?
Was ich unter Ebenen verstehe, hier ein kleines Beispiel:
Zylinder:
X ---Y---Z
X ---Y---Z
^ Das ist eine Ebene
Wobei X für die Vertices der ersten Ebene, Y für die der 2. Z usw. stehen.
Ich hoffe ihr könnt mir helfen, ich komm einfach nicht weiter
Registriert: Mo Mai 06, 2002 20:27 Beiträge: 479 Wohnort: Bremen
also ich hab das prob glaub ich noch nicht ganz verstanden.... es muss doch irgendwelche Regeln geben, die für deine Ebenen gelten müssen. (z.b. rechtwinklich zum Mittelvektor des Zylinders oder irgendsowas)
Andernfalls nimmst du dir einfach 3 beliebige Vertices die dann eine Ebene bilden.
Und was ich dann noch wissen müsste ist, welche Art von Ebenengleichung du benutzen willst - oder ist dir das egal?
Registriert: Mo Mai 06, 2002 20:27 Beiträge: 479 Wohnort: Bremen
also schließe ich daraus, dass das Problem nicht ist an eine Ebenengleichung zu kommen, sondern zu prüfen welche Vertices darauf liegen? Das sollte ziemlich einfach gehen... sag einfach, dass es das ist, und ich werd mir ein Verfahren überlegen und posten
Registriert: Di Mai 14, 2002 21:07 Beiträge: 70 Wohnort: Heilbronn/Neckar
Juhu, genau das meinte ich 8)
Jo, wär echt klasse wenn du dir was überlegen könntest...
Ich versuchs auch schon die ganze Zeit, aber es klappt irgendwie nicht :/
Registriert: Mo Mai 06, 2002 20:27 Beiträge: 479 Wohnort: Bremen
okay.... ich schlage vor, du beschreibst deine Ebenen in der Punkt-Normalen-Form. (Ein Punkt der in der Ebene liegt und ein Vektor der senkrecht auf der Ebene steht - sozusagen ein Up-Vektor.) Du hast also einen Punkt P0 und einen Vektor n. Es ist erstaunlich, aber mehr brauchst du nicht um eine Ebene eindeutig zu beschreiben...
Nun stellt sich deine Frage, wie finde ich Punkte, die in der Ebene liegen...
Nun, ein Punkt P ist genau dann Teil der Ebene, wenn der Richtungs-Vektor s zwischen P und P0 senkrecht zum Up-Vektor ist. (logisch oder? Denn ist P Teil der Ebene dann ist die Strecke P-P0 ja auch Teil der Ebene und damit muss der Up-Vector auch zu dieser Strecke senkrecht sein)
Wie bekommst du nun raus, ob s senkrecht zu n ist? Ganz einfach über das Punktprodukt. s * n muss nämlich 0 sein, den cos(0) ergibt bekanntlich 90°.
Also haben wir die Gleichung
s * n = 0.
Nun hilft es dir relativ wenig mit s zu hantieren, eine Gleichung in die du die Komponenten des fraglichen Punktes P einsetzen kannst wäre da hilfreicher. s ist ja nichts anderes als der Vektor zwischen P0 und P... also
s = (x0 - x, y0 - y, z0 - z).
Das in obige Gleichung eingesetzt ergibt:
(x0 - x, y0 - y, z0 - z) * n = 0;
jetzt zerlegen wir n noch in seine Komponenten und erhalten diese praktische Gleichung:
a(x0 - x) + b(y0 - y) + c(z0 - z) = 0;
a, b und c sind die Komponenten des Up-Vectors n. x0, y0, z0 die des Punktes P0 der in der Ebene liegt und in x, y und z setzt du die Komponenten des Punktes ein, den du überprüfen willst. Ergibt die linke Seite 0 ist die Gleichung erfüllt und dein Punkt liegt in der Ebene!
Ich hoffe du hast alles verstanden... das ist schon nicht mehr ganz so einfache Algebra. Im Zweifelsfall hol dir mal ein gutes Buch dazu...
Mitglieder in diesem Forum: 0 Mitglieder und 22 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.