Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.07.2011, 10:31

Prüfen ob Punkt auf Ebene liegt

Hallo Zusammen

Der Benutzer meiner Applikation hat die Möglichkeit, eine Ebene im Raum zu erstellen. Dazu muss er entweder die Koordinaten der Eckpunkte eingeben, oder im Raum die Fläche selber durch klicken erstellen.

Nun möchte ich prüfen, ob die vom Benutzer eingegebenen Koordinaten (egal ob per Tastatur oder per Mausklick), alle auf einer Ebene liegen.

Ich habe diverse Artikel darüber gelesen und habe es Mathematisch im Prinzip verstanden. Doch wie so oft in diesem Bereich, kann ich es nicht in Code umsetzen. Irgendwie fehlt mir ein Ansatz...

Kann mir jemand helfen??

Danke und Gruss
Master Chief

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

06.07.2011, 10:40

Ebenengleichung bestimmen und Punkt einsetzen!?

3

06.07.2011, 10:41

Ja, wie gesagt, das Mathematische Prinzip verstehe ich schon... nur an der Umsetzung fehlt es noch ein wenig.. =)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

06.07.2011, 10:43

Und wo genau bei der Umsetzung?

5

06.07.2011, 10:44

Ja allgemein =)

Ich habe die Punkte, welche eine Ebene bilden sollten in Koordinatenform vorliegen.. was mache ich nun??
Klar, Ebenengleichung bilden, aber wie mache ich das im Code.. ich stehe auf der Leitung, oder bin unfähig =)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

06.07.2011, 10:52

Wenn du genau drei Punkte hast dann spannen die immer eine Ebene auf, da brauchst du nicht testen ob die drin liegen, die Eben ergibt sich aus diesen drei Punkten. Wie genau steht im oben verlinkten Wikipedia Artikel genaustens erklärt, inklusive Beispiel...

7

06.07.2011, 11:00

Ja, mir ist klar, dass wenn ich 3 Punkte habe, diese eine Ebene bilden.

Es geht ja darum, dass ich prüfen will, ob eine beliebige Anzahl an Eckpunkten eine Ebene bilden.
Klar ist mir auch, dass ich da die ersten 3 Punkte nehmen kann um eine Ebene zu bilden. Die restlichen Punkte prüfe ich dann mit dieser Ebene.

Aber wie mache ich das Programmiertechnisch... wie sieht der Code aus? bzw. einen Ansatz..??

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

06.07.2011, 11:16

Du berechnest die Ebenenkoeffizienten und setzt in die Gleichung ein. Ich mein was soll man da jetzt groß sagen. Das ist eine einfache Formel, ich kapier echt nicht wo das Problem liegt ?(

C-/C++-Quelltext

1
2
  if (std::abs(A * x + B * y + C * z + D) < 0.0001f)
    // Punkt liegt in der Ebene

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

06.07.2011, 14:16

Oder du bildest einfach aus je drei Punkten die Normale der Ebene und wenn die Normale der Punkte A, B und C nicht mit der Normale von B, C und D übereinstimmt, dann liegen A, B, C und D ganz sicher nicht in der selben Ebene. Wenn die Normalen identisch sind, dann liegen alle 4 in einer Ebene. Ist auch sehr einfach zu berechnen mit Differenz-Vektoren und dem Kreuzprodukt. Aber kürzer als das von dot wird es sicher nicht ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Mastermind

unregistriert

10

06.07.2011, 14:25

Oder du bildest einfach aus je drei Punkten die Normale der Ebene und wenn die Normale der Punkte A, B und C nicht mit der Normale von B, C und D übereinstimmt, dann liegen A, B, C und D ganz sicher nicht in der selben Ebene. Wenn die Normalen identisch sind, dann liegen alle 4 in einer Ebene. Ist auch sehr einfach zu berechnen mit Differenz-Vektoren und dem Kreuzprodukt. Aber kürzer als das von dot wird es sicher nicht ;)


Und wenn die jeweils 3 Punkte zwei parallele Ebenen aufspannen?

Werbeanzeige