Geometrie, Linie auf Kreis kürzen

Erste Frage Aufrufe: 268     Aktiv: 04.02.2023 um 16:42

0

Hallo, ich stecke fest bei einer wahrscheinlich einfachen Frage. Mein Geometriewissen dat wohl inzwischen das Ablaufdatum überschritten. Folgendes versuche ich zu berechnen: Stellt euch im XY-Koordinatensystem beliebige Gerade deren Koordinaten x1,y1 und x2,y2 bekannt sind. Am Ende der Geraden, also am Punkt x2,y2 befindet sich ein Kreis, dessen Zentrum genau auf x2,y2 liegt. Der Radius des Kreises ist ebenfalls bekannt. Gesucht wird nun der Punkt x,y an dem die Gerade den Kreis zum ersten Mal schneidet. Achtung, die Gerade kann natürlich in beliebige "Himmelsrichtingen" zeigen.

Die Läge der Geraden von x1,y1 zum gesuchten Schnittpunkt wäre kein Problem. Hier würde mit Pythagoras die Länge der Hypotenuse abzüglich des Radius schon reichen. Gesucht sind jedoch Koordinaten des Schnittpunktes. Ich könnte mit theoretisch mehrere Lösungen vorstellen. Einmal mittels Trigonometrie, weil der Winkel der Geraden sich nicht ändert und wir die beiden Hypotenusen leicht berechnen können. Denkbar wären aber auch zwei Rechtecke, die sich ja nur in den Proportionen voneinander unterscheiden. Ich verstricke mich jedoch ständig in der Lösung und denke wahrscheinlich viel zu kompliziert. LG Wolfgang

EDIT vom 04.02.2023 um 16:42:

Ok, ich konnte das inzwischen lösen. Vielleicht sind meine Begriffe und Ausdrücke nicht mehr ganz richtig (immerhin sind es bei mir 40+ Jahre seitdem ich so was zuletzt gemacht habe). Ich versuche es mal mit ganz trivialen Worten: Stellt euch eine Line vor, an deren Ende ein Kreis ist. Nun soll die Linie so gekürzt werden, dass sie nicht mehr bis zum Kreiszentrum geht, sondern an der Kreiskontur endet. Wer kein VB kann, Math.Sqr bedeutet Wurzelziehen und ^2 bedeutet Quadrat, also "hoch 2". Mit "Select Case" werden die vier Himmelsrichtungen unterschieden.

Hier meine Lösung, in VB-Syntax:

        f = Math.Sqr(Abs(.x2 - .x1) ^ 2 + Abs(.y2 - .y1) ^ 2)
        f = (f - r) / f
        Select Case True
            Case .x2 >= .x1 And .y2 >= .y1  'SO
                .x2 = ((.x2 - .x1) * f) + .x1
                .y2 = ((.y2 - .y1) * f) + .y1
            Case .x2 < .x1 And .y2 >= .y1   'SW
                .x2 = .x1 - ((.x1 - .x2) * f)
                .y2 = ((.y2 - .y1) * f) + .y1
            Case .x2 >= .x1 And .y2 < .y1   'NO
                .x2 = ((.x2 - .x1) * f) + .x1
                .y2 = .y1 - ((.y1 - .y2) * f)
            Case .x2 < .x1 And .y2 < .y1    'NW
                .x2 = .x1 - ((.x1 - .x2) * f)
                .y2 = .y1 - ((.y1 - .y2) * f)
        End Select

Allen die sich Gedanken gemacht haben ein dickes Danke! LG Wolfgang
Diese Frage melden
gefragt

Punkte: 10

 

Vektorgeometrie sagt dir was oder nichts?   ─   honda 04.02.2023 um 11:27

Eine Gerade hat gar kein Ende und keine Länge, und der Kreis kann sich auch nicht an einem Punkt befinden. "Zum ersten Mal schneidet" - was hat die Zeit damit zu tun? Und, falls der Ort gemeint ist: der Mittelpunkt des Kreises liegt doch auf der Geraden. Dann sind die beiden Schnittpunkte doch gleich weit davon entfernt. Und wenn statt einer Geraden eine Strecke gemeint wäre, dann kann es möglicherweise auch gar keine Schnittpunkte geben. Kurz: ich verstehe die Aufgabe gar nicht. ...und beim Pythagoras kommen doch Quadrate vor...?   ─   joergwausw 04.02.2023 um 11:47
Kommentar schreiben
0 Antworten