|
|
Schnittpunkt Kreis-Gerade |
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.07.2008, 15:42
Titel: Schnittpunkt Kreis-Gerade
|
 |
Ich brauche Hilfe bei der
---Schnittpunktberrechnung von Kreis und Gerade---
Wenn ich also Geradengleiche (m*x+c) und Kreisgleichung (x^2+y^2=...) gegeben habe. Wie funktioniert das dann?
Mfg, Lennart
|
|
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 31.07.2008, 16:58
Titel:
|
 |
Hallo,
oder
sollte dir da weiterhelfen.
MfG
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.08.2008, 10:12
Titel:
|
 |
danke erstmal.
Bin leider so ein Anfänger, dass ich mit der englischen Hilfe von matlab (un dem was sie zu fsolve ausspuckt) nicht wirklich was anfangen kann.
Ist das sehr kompliziert von wegen der schnittpunkte?
Gruß Lennart
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.08.2008, 11:12
Titel:
|
 |
Hallo,
zusätzlich gibt es natürlich auch noch
und
(hab ich leider unterschlagen).
z.B. geht es mit roots
Gehen wir von deinen 2 Gleichungen aus:
x^2 + y^2 = r^2;
y = m*x + c;
Dann setzt man einfach y in die obige Gleichung ein:
x^2 + (m*x + c)^2 = r^2;
bzw.
(1+m^2)*x^2 + 2*m*c*x + (c^2 - r^2) = 0;
Dies dient nun als input für roots:
Und schon erhälst du als Output die X-Koordinaten der beiden Schnittpunkte (eventuell noch kontrollieren ob sie reell sind da roots auch komplexzahlige Lösungen liefert wenn die Schnittpunkte nicht reell sind).
Für die Y-Koordinaten setzt du einfach die X-Koordinaten in eine der beiden Gleichungen ein.
Mit fzero sieht das ganze z.B. so aus (oder auch fsolve):
mit x0 als Startpunkt. Allerdings liefert die fzero nur einen Schnittpunkt (oder NaN für keinen reellen), deshalb müsstest du die Funktion zweimal aufrufen, z.B. einmal mit -r und einmal mit +r als Startpunkt.
MfG
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.08.2008, 16:34
Titel:
|
 |
vielen Dank. Ich denke das funktioniert so.
Ich bin gerade dabei es zu probieren.
Meine speziellen Werte sind:
y = -1,19x + 3,38
(y-1)² + (x-1)² = 1,5²
Ich habe mit root/fzero probiert zu rechnen, bekomme aber jeweils komplexe Zahlen als Lösungen. Jetzt bin ich momentan auf Fehlersuch, komme jedoch nicht wirklich weiter.
Das das jemand nochmal nachrechnet zur Kontrolle ist wohl aber zuviel verlangt =).
Lennart
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.08.2008, 19:35
Titel:
|
 |
Hallo,
hast du auch alles richtig eingesetzt?
m = -1.19;
c = 3.38;
r = 1.5;
(m*x+c-1)^2 + (x-1)^2 = r^2;
ergibt
(1+m^2)*x^2 + (2*m*(c-1) - 2)*x + (c-1)^2+1-r^2 = 0;
MfG
|
|
|
dotwinX |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.12.2009, 16:04
Titel: Zusatzfrage zum gleichen Problem
|
 |
|
 |
|
Hallo erstmal,
ich wollte keinen neuen Thread eröffnen, da dieser recht gut zu meinem Problem passt. Ich habe auch einen Kreis und eine Gerade, leider ohne Geradengleichung, sondern nur mit endlichen numerischen Punkten.
Wie errechne ich denn da den Schnittpunkt?
Ich hab mal folgende Funktion geschrieben, die auch funktioniert:
Grundidee ist halt, dass der Abstand jedes Punktes einzelnd geprüft wird. Der geringste Abstand gewinnt.
...
Diese simple Funktion hat 2 derbe Probleme
1) Geschwindigkeit, wenn die Stützstellen (also die Länge der Vektoren) mal so ebend 10.000 betragen, dann haben wir ne Doppellschleife mit 10.000*10.000 runden!
Und da ich diese Funktion nochmal 360 mal ausführe (Ein Kreis mit vielen Geraden, die etwa von der Mitte starten), kannn man sich vorstellen, dass dies sehr sehr lange dauert.
2) Es ist nicht genau. Ansich wird ja der minimale Abstand gesucht, aber nich der exakte Schnittpunkt, welcher mir lieber wäre. Die Funktion sucht ja nur die Punkte die am dichtesten sind.
Habt ihr ne Idee oder ein paar Tipps wie man die Funktion verbessern könnte? oder gibt es so eine Funktion schon?
|
|
|
dotwinX |

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 06.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.12.2009, 17:06
Titel:
|
 |
Hab die Funktion gefunden!
Die heißt "CURVEINTERSECT", für diejenigen die das auch interessiert
|
|
|
Dave |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.10.2010, 20:41
Titel: Danke
|
 |
Versuche die Schnittpunkte dreier Kurven zu berechnen, mal versuchen! Merci für den Tipp
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|