Kollision Strecke-Strecke OHNE Runden



  • hi,
    zur Zeit läuft mein Test so ab: beide Strecken (durch anfangs und Endpunkt gegeben) werden in lineare Funktionen umgewandelt, dann wird der Schnittpunkt berechnet und anschließend getestet ob dieser gültig ist.

    Und bei letzterem Punkt, liegt leider der Hase im Pfeffer 😉

    Der Test ist extrem kritisch, da es teilweise um Bruchteile geht und da kommt es nunmal teiweise zu Fehlern, z.B. wenn die Strecke von 4 bis 14 geht, aber durch einen Rundungsfehler der Schnittpunkt bei 14.0000000000000001 liegt, wird der Punkt als außerhalb gewertet, obwohl er eigentlich auf der Strecke liegt.

    Ok, kann man ja in dem Fall einfach durch Runden umgehen. Eigentlich zumindest, denn bei mir gibt es noch zusätzlich das Problem, dass sowohl Strecken getestet werden müssen, deren Strecken sehr weit auseinander liegen, als auch Strecken die sehr nah beieinander liegen.

    Deshalb kann ich nicht einfach pauschal auf einen Wert runden, da es bei einer der beiden Extremen zu Rundungsfehlern kommen würde.

    Lange Rede kurzer Sinn: ich brauche einen Test Strecke-Strecke, der mir sofort sagt, es gibt nen Schnittpunkt, der bei (x;y) liegt oder es gibt keinen.
    So dass nicht erst irgendwie der ermittelte Schnittpunkt auf Gültigkeit geprüft werden muss.

    Ich zweifle selber daran, dass es einen solchen Test gibt, wenn ihr also auch keinen kennt, sagt es bitte auch! Denn dann weiß ich wenigstens woran ich bin und muss eben z.B. eine dynamische Rundung einbauen.

    thxia



  • Ich glaube nicht, dass es sowas gibt. Ich hab mal nen Plot gesehen von ner Strecke, extrem hoch aufgelöst mit ner sehr genauen Library. Dazu die Punkte, die bei Berechnung mit Hilfe von doubles als "auf der Strecke" angesehen werden. Die wenigsten überhaupt darstellbaren Punkte liegen genau auf der Strecke. Extrem hässlich sowas.



  • Wenn du exakte Werte brauchst, rechne doch mit rationalen Zahlen.



  • @op:
    was Bashar sagt, macht sinn.

    Jester schrieb:

    Ich glaube nicht, dass es sowas gibt. Ich hab mal nen Plot gesehen von ner Strecke, extrem hoch aufgelöst mit ner sehr genauen Library. Dazu die Punkte, die bei Berechnung mit Hilfe von doubles als "auf der Strecke" angesehen werden. Die wenigsten überhaupt darstellbaren Punkte liegen genau auf der Strecke. Extrem hässlich sowas.

    namen, bitte.



  • Sorry, ne Quelle dafür hab ich nicht zur Hand. Dass das der Fall ist kann man sich ja leicht klar machen. Mit sowas wie GMP sollte es aber auch möglich sein sich sonen plot selber zu machen. 🙂



  • logischer Weise währen rationale Zahlen größer im Speicherbedarf, als doubles, bitt korrigiert mich falls ich nicht Recht habe! Wenn dem so währe gäbe es da das Problem, das meine Prog so schon z.T. 800 MB RAM belegt, sprich kann ich nicht einfach mal so noch mehr reinstecken.

    Ich rechne jetzt die Strecken um, sodass sie ungefähr im gleichen Größenbereich liegen und ich mit einer einheitlichen Rundung ganz weit komme.

    Danke auf jeden Fall für die Antworten!



  • Das stimmt natürlich. Aber du musst ja nicht für jede Strecke alle Koordinaten rational abspeichern. Ich hatte das so verstanden, dass die Koordinaten ganzzahlig sind. Die rationalen Zahlen tauchen bloß im Kollisionstest auf, das sollte vernachlässigbarer Speicherbedarf sein.



  • Jester schrieb:

    Sorry, ne Quelle dafür hab ich nicht zur Hand. Dass das der Fall ist kann man sich ja leicht klar machen. Mit sowas wie GMP sollte es aber auch möglich sein sich sonen plot selber zu machen. 🙂

    das beispiel war schon verständlich, ich dachte nur, das hätte irgendeinen weiterführenden interessanten mathematischen hintergrund 🙂



  • Ne, Details dazu habe ich leider nicht. Aber ein Prof meinte neulich, dass derzeit viel an der numerisch stabilen Implementierung von Standardalgorithmen aus der Geometrie geforscht wird.



  • Bashar schrieb:

    Das stimmt natürlich. Aber du musst ja nicht für jede Strecke alle Koordinaten rational abspeichern. Ich hatte das so verstanden, dass die Koordinaten ganzzahlig sind. Die rationalen Zahlen tauchen bloß im Kollisionstest auf, das sollte vernachlässigbarer Speicherbedarf sein.

    ist leider nicht der Fall. Die Koordinaten müssen auch Kommazahlen sein 😞


Anmelden zum Antworten