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

11

20.04.2011, 09:54

Also a1b2-a2b1. Das Vorzeichen liefert dir die gesuchte Antwort auf Dein Polygon-Problem.



Also DAS hilft mir weiter - ich habe bisher nämlich nicht verstanden, was ich mit dme Vektor machen soll, der das Ergebnis dieses Kreuzproduktes ist :-)

Rein aus persönlichem Interesse: wie Sähe die Lösung denn im 3D-Raum aus, also wenn auch noch a3 und b3 im Spiel sind?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

20.04.2011, 09:59

Da gibt es keine Lösung. Eine Lösung ist nur in zweidimensionalem Raum möglich, da die Perspektive der Betrachtung des Polygons wichtig ist (man kann ein Polygon im Raum immerhin von unendlich vielen Richtungen aus betrachten), welche nur durch die Projektion von 3D-Koordinaten in einen 2D-Raum möglich wird.
Heißt konkret also, dass zunächst mal die 3D-Koordinaten des Polygons auf den 2D-Raum des Bildschirms projiziert werden müssen, damit eine Bestimmung der "Polygon-Drehrichtung" überhaupt möglich ist. Und dann hast Du letztendlich ja wieder genau die gleiche Ausgangssituation.
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]

13

20.04.2011, 10:04

Klingt logisch - und würde sogar zu meinem Problem passen wenn es 3D wäre :-)

Danke!

14

20.04.2011, 12:27

OK, Bauen wir die Geschichte um:

Zitat


// koordinaten in vektoren umwandeln
v1.x=x1-x2;
v1.y=x1-x2;

v2.x=x3-x2;
v2.y=y3-y2;

//kreuzprodukt ermitteln
p=v1.x*v2.y - v2.x*v1.y;



Jetzt ist das Ergebins immer 558 bzw rund -950, d.h. die Richtung wird korrekt erkannt, nur bekomme ich da auch keine passenden Winkel raus. Meine Idee wäre es jetzt, im Falle von p<0 einfach das Skalarprodukt zu nehmen und um 180 Grad zu erhöhen - dann hätte ich auch meinen (richtigen) Winkel. Nur: geht das nicht auch einfacher?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Elmi« (20.04.2011, 12:45)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

20.04.2011, 12:32

Das Skalarprodukt hilft dir hier nicht weiter da du damit im Prinzip nur feststellen kannst wie weit zwei Vektoren in die selbe Richtung zeigen, nicht wie herum sie angeordnet sind (zumindest nicht ohne zusätzliche geometrische Überlegungen). Das Kreuzprodukt ist sicherlich die einfachste Variante das zu prüfen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

20.04.2011, 12:34

Nee. Genau deswegen geht das Skalarprodukt für Deinem Zweck auch nicht. ;) Es ermittelt Winkel, aber eben nur Absolutwerte der Differenz zwischen beiden.
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]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

17

20.04.2011, 12:57

Du bekommst den Winkel aus dem Kreuzprodukt raus wenns sein muss, aber du brauchst den Winkel doch nicht!?

18

20.04.2011, 13:19

Mist, jetzt habe ich den alten Beitrag editiert statt ihn zu Zitieren :-(

Nein, eigentlich brauche ich den Winkel nicht mehr, die Geschichte mit der Ermittlung Drehrichtung an Hand des Vorzeichens klappt mittlerweile hervorragend.

Ich will jetzt nur der Vollständigkeit halber auch noch die Variante _mit_ dem Winkel probieren, sprich aus rein persönlichem Interesse die ursprüngliche Idee auch noch nachvollziehen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

19

20.04.2011, 13:34

Naja, was du dazu willst wird eigentlich der Winkel zwischem jedem Vektor und der x-Achse sein sodass du dann die Differenzen dieser Winkel betrachten kannst. Den bekommst du z.B. über atan2(). Das ist aber komplizierter, langsamer, ungenauer, ...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

20.04.2011, 14:41

Edit: Vergesst es ;)
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]

Werbeanzeige