Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Hallo,
ich hab ein klitze-kleines Problemchen mit der Kollisionsabfrage bei einer gedrehten Ellipse und einem Punkt.
Eine standard Ellipse ist mit der Gleichung: x²/a² + y²/b² = 1 gegeben. Jetzt brauche ich ja nur meinen Punkt einsetzen und prüfen, ob die linke Seite der Gleichung <= 1 ergibt -> Kollision.
Das Problem ist jetzt, dass die Ellipse um einen Winkel phi gedreht ist, und die Gleichung dann offensichtlich nicht mehr stimmt. Gibt es da irgendwas, was man in der Gleichung noch berücksichtigen muss, damit das wieder funktioniert?
Oder muss man dann anders vorgehen?
Dreh doch einfach den zu prüfenden Punkt in das Koordinatensystem der Ellipse und setz ihn dann in die Gleichung ein. Ist denke ich einfacher, als die Formel zu manipulieren (die Rotationsmatrix haste ja, denke ich)
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Ja, das müsste funktionieren.
Ist mir auch gestern abend eingefallen, oder eher sehr früh heute morgen . So Probleme halten mich immer vom Einschlafen ab, muss dann immer drüber nachdenken... Trotzdem Danke.
Muss den Punkt aber gegen die eigentliche Drehung der Ellipse drehen, glaub ich. Aber das wird ja dann kein Problem mehr.
Bisl mit sin & cos und fertig. Die Lösung war doch einfacher als ursprünglich erwartet...
Aber dennoch vielleicht wäre es performanter, wenn ich die Gleichung ändere. Denn ich hab leider ein paar mehr Punkte, so dass ich jeden Punkt rotieren müsste. Dazu müsste ich doch den X und Y Wert in meiner Gleichung quasi als Vector ansehen und durch meine Rotationsmatrix schicken, und wieder zurück in die Gleichung stecken, oder? Naja funktionieren tut es ja auch so, optimiert wird später
Prinzipiell ja.
Wenn Du die Formel der Ellipse anpassen willst, um Dir die Drehung zu ersparen weiss ich nicht, ob Du da was an Performance rausholst, weil die Ellipsenfunktion dann sofort wesentlich komplizierter wird (Mit Sinsn und Cosinen und so und jeden Punkt dann da einsetzen dauert evtl länder als ne simple Matrizenmultiplikation) Wie diese Aussieht weiss ich allerdings auch nicht, da sind unsete Mathefüchse (oder eine Frmelsammlung) gefragt.
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Du kannst ja sinus und cosinus zwischenspeichern, weil die für alle punkte gleich sind. Wenn du dann den punkt mit hilfe dieser gespeicherten werte transformierst, ist das genau das gleiche wie eine rotationsmatrix.
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Ja, das stimmt. Dann ist es wohl auch performanter Danke für die Antwort!
Dann mache ich das so, dass ich alle Punkte rotiere, dass mit der Gleichung umschreiben ist dann doch mehr Arbeit^^
hab nochmal bei Wikipedia nachgeguckt:
Berechne die beiden Brennpunkte B1, B2, dann gilt: PB1+PB2=2a, will heissen: ein Punkt liegt dann innerhalb der Ellipse, wenn die Summe seiner Abstände zu den beiden Brennpunkten kleinergleich dem Zweifachen des großen Radius ist.
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Mitglieder in diesem Forum: 0 Mitglieder und 2 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.