Schnittpunkt Strahl - Kugel



  • Hallo,

    ich habe einen Strahl in einem 3D Raum und will prüfen ob dieser eine Kugel schneidet. Leider liegt mein Mathe einiges zurück und ich verliere gerade leider ein wenig den Überblick.

    Ein Strahl ergibt sich doch aus Ursprungspunkt O(x,y,z) und einem normalisiertem Richtungsvektor sprich R(t) = O + t*D. Welche Bedeutung hat t in diesem Fall?

    Die Kugel ist bestimmt durch ihren Mittelpunkt K(l,m,n) und dem Radius r.

    Soweit so gut, irgendwo scheint sich da bei mir aber ein Fehler eingeschlichen zu haben. Ich gehe wie folgt vor.

    Schritt 1: Berechnung von a, b, c

    a = D^2
    b = 2*( P*D )
    c = P^2 - r^2

    Wenn ich dann a, b, c ausgerechnet habe, kann ich diese durch eine quadratische Gleichung lösen und mit dem Ergebnis prüfen ob ein Schnitt vorhanden ist.

    Ich erhalte aber beim Lösen der Gleichung kein korrektes Ergebnis, da diese Berechnung scheinbar von Schnitt zw. Gerade und Kugel ausgeht. Ich will aber den Schnitt zwischen Strahl und Kugel berechnen. Wo müsste ich dort jetzt ansetzen.

    MfG, Tim



  • Suche doch einfach mit Google nach der Gleichung fuer den Abstand eines Punktes von einer Linie. Dann nimmst Du fuer den Punkt die Kugelmitte und fuer die Linie deinen Strahl. Ist der Abstand kleiner als der Kugelradius, wird die Kugel geschnitten.



  • t gibt an, wie oft Der Vektor D zwischen O und Schnittpunkt liegt. Daher muss t positiv sein. Aber das steht doch schon in deiner Ausgangsgleichung bzw. Definition des Strahls.

    Bye, TGGC (Demo or Die)



  • Guten Morgen,

    das heißt, t ist sozusagen der Abstand zw. O und dem Schnittpunkt.

    @Gunnar: Der Strahl muss nicht zwangsläufig durch den Mittelpunkt verlaufen.

    Wenn ich meinen Strahl als Gerade habe die durch 2 Punkte bestimmt ist, kann ich den Schnittpunkt mit der Berechnung ohne Probleme bestimmen. Nur wenn ich den Richtungsvektor normalisiere funktioniert das nicht mehr. Vielleicht muss ich doch t mit angeben? Wenn der Strahl aber unendlich sein soll, müsste doch t auch unendlich sein oder?

    Gruß, Tim



  • Nein, der Abstand ist t * |D|, ist doch logisch. Verstehst du überhaupt was t ist? Für einen Strahl muss t >= 0 sein, dann bekommt man mit O + t*D alle Punkte, die auf dem Strahl liegen. So ist ein Strahl definiert. SDarum ist auch die Länge von D irrelevant, Hauptsache != 0.

    Also, wie wäre es, wenn du dich etwas mit dem Thema beschäftigst, statt rumzuquatschen?

    Bye, TGGC (Demo or Die)



  • Hallo,

    ganau das versuche ich ja, mich mit dem Thema zu beschäftigen.

    Trotzdem danke für die Hilfe.

    Gruß, Tim



  • Hallo,

    ich habe jetzt etliche Seiten gelesen und viel rumprobiert. Die Definition eines Strahls ist soweit klar. Wie ich einen Schnittpunkt zwischen Kugel und Gerade berechne auch.

    Hier mal mein Beispiel:

    Ich habe 2 Punkte, die eine Gerade bestimmen A(2,2,0) und B(-2,2,0). Die Kugel liegt der Einfachheit im Ursprung und hat den Radius 1.

    Der Strahl ist also R(t) = A+t(B-A). In meinem Fall also R(t) = (2,2,0)+t(-4,-4,0).

    Die Position P ist (2,2,0) und die Richtung D(-4,-4,0)

    Ich berechne nun a,b, und c.

    a = D^2
    b = 2*( P*D )
    c = P^2 - r^2

    Demnach erhalte ich für a=32, b=32 und c=7

    Ich setze a,b und c nun in die Gleichung ( -b +/- sqrt(b^2 - 4ac) ) / 2a ein und erhalte t1=0,68 und t2=0,32. Da beide Werte zwischen 0 und 1 liegen, liegt ein Schnittpunkt vor.

    Soweit so gut. Wenn ich aber jetzt den Richtungsvektor normalisiere erhalte ich logischerweise andere Werte und diese liegen dann bei a=1, b=-5.66, c=7, t1=3.83, t2=1.83. Ich könnte jetzt t1 und t2 durch die Länge des ursprünglichen Richtungsvektors (in dem Fall 5,6) teilen, aber das ist ja sicher auch nicht Sinn der Sache.

    Ich habe leider keinen Ansatz gefunden wie man bei einem normalisiertem Richtungsvektor verfahren kann. Vielleicht kann mir jemand einen Hinweise/Ansatz geben.

    Gruß, Tim



  • timbo schrieb:

    Da beide Werte zwischen 0 und 1 liegen, liegt ein Schnittpunkt vor.

    Entweder du erzählst Unsinn. Oder du erzählst Unsinn.

    Definiere Strahl.
    Definiere Schnittpunkt.
    Definiere t.

    Bye, TGGC (Demo or Die)



  • Ditsch, du hast recht, ich erzähle großen Unsinn. Ich war irritiert durch eine Abbildung aus einem Buch was ich zu Rate gezogen habe.

    Damit hat sich die Problematik erstmal erledigt.

    Vieln Dank für deine Hilfestellung und fürs auf die Füße treten. So langsam verzieht sich der Nebel ;-).

    Gruß, Tim


Anmelden zum Antworten