AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schnittpunkt Linie vs. Kreis

Ein Thema von Namenloser · begonnen am 25. Mär 2009 · letzter Beitrag vom 15. Okt 2012
Antwort Antwort
Seite 2 von 2     12   
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: Schnittpunkt Linie vs. Kreis

  Alt 30. Apr 2009, 07:29
m := 1E99 sollte reichen
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Schnittpunkt Linie vs. Kreis

  Alt 2. Mai 2009, 05:05
Zitat von Uwe Raabe:
Zitat:
// Gerade: P0 Punkt auf der Geraden, m: Steigung
Und wie gibt man damit eine Senkrechte an?
Indem man trickst und das Koordinatensystem um 90° dreht (so habe ich es gemacht, s.o.).
  Mit Zitat antworten Zitat
Draos

Registriert seit: 12. Aug 2008
42 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Schnittpunkt Linie vs. Kreis

  Alt 2. Mai 2009, 11:21
Oder man hat mal was in Mathe von Analytik gehört und löst das Problem über Vektoren.

k: [vx-vm]²=r²

g: vx=vn+s*va

mit
vm.. Ortsvektor des Kreismittelpunktes
vn.. Stützvektor der Geraden
va.. Richtungsvektor der Geraden


1. Gleichsetzten der beiden Gleichungen
2. Umformen nach s (ensteht quadratische Gleichung, maximal 2 Werte oder auch keine Lösung falls Wurzelwert<0)
3. Einsetzen von s in g bringt die Ortsvektoren der Punkte
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Schnittpunkt Linie vs. Kreis

  Alt 2. Mai 2009, 14:27
Zitat:
Oder man hat mal was in Mathe von Analytik gehört und löst das Problem über Vektoren.
Oder man hat wirklich etwas von Analysis mitbekommen und weiss, das Vektoren in den Bereich der Algebra fallen.

Zitat:
[vx-vm]²=r²
meinst du vielleicht |vx-vm|=r^2 ?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Schnittpunkt Linie vs. Kreis

  Alt 2. Mai 2009, 14:57
Jep, Analytik ist Chemie.

(Der Ansatz über Vektoren führt aber im Endeffekt auch zum gleichen Ergebnis)

(Und wenn mans ganz genau nimmt, sind reelle Zahlen auch Vektoren, von daher ist der ursprüngliche Ansatz auch über Vektoren )
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Draos

Registriert seit: 12. Aug 2008
42 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Schnittpunkt Linie vs. Kreis

  Alt 2. Mai 2009, 15:40
1. Analytik war bei uns immer kurzform von Analytische Geometrie.

2. Entweder die Form
k: [vx-vm]²=r² oder die
k: |vx-vm|=r. Deine wäre falsch
  Mit Zitat antworten Zitat
Dipl Phys Ernst Winter

Registriert seit: 14. Apr 2009
Ort: Jena
103 Beiträge
 
Delphi 3 Professional
 
#7

Re: Schnittpunkt Linie vs. Kreis

  Alt 3. Mai 2009, 12:36
Zitat:
Und wie gibt man damit eine Senkrechte an?
Vielen Dank für diesen Einwand.

m:= 1e99 würde zwar das Problem lösen, ist aber nicht eingebbar.

Gerade mit Punkt und Steigung war zwar das Einfachste, ist aber ein Fehlgriff. Ich habe das Programm abgeändert auf Gerade durch zwei Punkte.
Angehängte Dateien
Dateityp: exe geradekreis_687.exe (169,6 KB, 13x aufgerufen)
Autor: DP Ernst Winter
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Schnittpunkt Linie vs. Kreis

  Alt 3. Mai 2009, 12:46
Naja, bei einer senkrechten Gerade/Strecke ist der Fall doch trivial.
Es sei eine Strecke/Gerade [P1P2]/P1P2 gegeben durch die Punkte P1(x1|y1), P2(x2,y2) und ein Kreis k(M,r) mit dem Mittelpunkt M(xm,ym). Es gelte x1=x2.

Delphi-Quellcode:
dx := x1-xm;
disc := r*r-dx*dx;
if disc > 0 then
begin
  setlength(result, 2);
  result[0].X := x1;
  result[0].Y := ym + sqrt(disc);
  result[1].X := x1;
  result[2].Y := ym - sqrt(disc);
end
else if disc = 0 then
begin
  setlength(result, 1);
  result[0].X := x1;
  result[0].Y := ym;
end;
Die Schnittpunkte werden in result zurückgegeben.

(Bei einer Strecke muss man noch überprüfen, ob die gefundenen Schnittpunkte auch wirklich zwischen P1 und P2 liegen, da reicht die Überprüfung ((resultY <= y1) and (resultY >=y2)) or ((resultY >= <1) and (resultY <= y2)) )


Ich habe bisher alle Probleme dieser Art (z.B. Billardsimulation, Dreiecksaufgabe beim BWINF) so gelöst (Betrachtung als Funktion für x1!=x2, ansonsten Sonderfallbehandlung als senkrechte Gerade) und es funktioniert prima.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz