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

13.03.2014, 12:28

Ebene grafisch darstellen

Hallo alle zusammen,

ich habe folgendes Anliegen:

Ich habe 2 Punkte, die ein Nutzer selber im Raum auswählen kann und ich möchte die senkrechte Ebene, die durch diese Punkte läuft darstellen.

Ich möchte die Ebene durch horizontale Linien darstellen. Um diese Linien richtig zu drehen möchte ich den Winkel bestimmen, um den ich die Linien drehen muss. Doch wie genau mache ich das?

Meine erste Idee war, dass ich die Ebene berechnen und dann den Schnittwinkel mit einer zweiten Ebene bestimme.

Die Ebene habe ich wie folgt berechnet:

C#-Quelltext

1
2
3
4
5
6
7
8
9
Vector3 differenz = new Vector3(p2.X - p1.X, p2.Y - p1.Y, p2.Z - p1.Z);
Vector3 eZ = new Vector3(0,0,1);
Vector3 normal = new Vector3(
                            (eZ.Y * differenz.Z - eZ.Z * differenz.Y),
                            (eZ.Z * differenz.X - eZ.X * differenz.Z),
                            (eZ.X * differenz.Y - eZ.Y * differenz.X)
                                ); 

float layer_result = normal.X * v1.X + normal.Y * v1.Y + normal.Z * v1.Z;


Habe ich dies gemacht, könnte ich doch sagen, dass der Drehwinkel, der Winkel zwischen der Normalen und diesem Vektor ist oder:

C#-Quelltext

1
Vector3 normalX = new Vector3(0, 1, 0);


Rechne ich das aber per Hand aus, so kommen dort sehr fragwürdige Ergebnisse raus.

Kann mir jemand einen Tip geben? Ich stehe gerade etwas auf dem Schlauch.

Danke & Gruß

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

13.03.2014, 15:41

Die hast deine beiden Koordinaten (p1 und p2) und ermittelst anhand dieser bereits deren Differenz. Wenn du bei der Differenz die Achse auf 0 setzt, die die Höhe beschreibt (wahrscheinlich die Y-Achse) hast du bereits eine der Linien, anhand derer du die Ebene beschreiben willst. Mittels Trigonometrie am rechten Winkel kannst du den gewünschten Winkel errechnen (die Länge der ermittelten Differenz (ohne Höhenwert) ist die Ankathete, der entfernte Wert der Höhenachse ist die Gegenkathete und die Länge vor dem Entfernen des Werts der Höhenachse ist die Hypotenuse).

Ob du derartige Berechnungen überhaupt brauchst oder ob etwas anderes nicht sinnvoller sein könnte, kann man aber nur sagen, wenn du beschreibst, wofür du das genau benötigst.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

13.03.2014, 23:33

2 Punkte sind nicht genug, um eine Ebene zu definieren.
Du brauchst 3.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

4

14.03.2014, 08:17

2 Punkte sind nicht genug, um eine Ebene zu definieren.
Du brauchst 3.

Nicht, wenn sie senkrecht sein soll. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige