![]() |
Schnittpunkt zweier Halbkreise berechnen?
Hallöchen!
Ich schreibe gerade ein Programm für Physik, mit welchen man Interferenzbilder darstellen lassen kann. Nun würde ich aber gern wissen wie man den Schnittpunkt von zwei Halbkreisen berechnen kann?! Weiteres Problem ist, dass es an jedem Halbkreis VIELE Schnittpunkte gibt...:( ...als Nebenfrage würd ich gern wissen ob ich diese ganze Function in nem zwischenbild speichern kann damit dieses Flackern auf der PaintBox verschwindet...aber das ganze als TImage funzt net...:( :gruebel: Und damit ihr ma wisst wies im Moment aussieht hier erstma der Code...
Delphi-Quellcode:
Schonmal Danke im voraus!
function malen:Boolean;
var mx,my,i,r,l:Integer; begin Form1.PaintBox1.Repaint; mx:=Form1.Panel1.Width; my:=Form1.Paintbox1.Height; r:=Form1.WL.value; Form1.PaintBox1.Canvas.Pen.Width:=1; Form1.PaintBox1.Canvas.Pen.Color:=clblue; l:=1; Repeat Form1.PaintBox1.canvas.MoveTo(mx+r, my); For i:= 0 to 180 do begin Form1.PaintBox1.canvas.LineTo(round(mx+r*cos(i*Pi/180)),round(my-r*sin(i*Pi/180))); end; l:=l+1; r:=Form1.WL.Value*l; Until r>600; mx:=Form1.Panel1.Width+Form1.Panel2.width; my:=Form1.Paintbox1.Height; r:=Form1.WL.value; Form1.PaintBox1.Canvas.Pen.Width:=1; Form1.PaintBox1.Canvas.Pen.Color:=clblue; l:=1; Repeat Form1.PaintBox1.canvas.MoveTo(mx+r, my); For i:= 0 to 180 do begin Form1.PaintBox1.canvas.LineTo(round(mx+r*cos(i*Pi/180)),round(my-r*sin(i*Pi/180))); end; l:=l+1; r:=Form1.WL.Value*l; Until r>600; |
Re: Schnittpunkt zweier Halbkreise berechnen?
Also gut, was du brauchst, sind folgende Daten:
Mittelpunkt, Radius, Startwinkel, Endwinkel Du hast jetzt folgendes Gleichungssystem: I: x1+cos(alpha1)*r1=x2+cos(alpha2)*r2 II: y1+sin(alpha1)*r1=y2+sin(alpha2)*r2 Das musst du jetzt irgendwie nach alpha1 und alpha2 auflösen. alpha1=arccos((x2+cos(alpha2)*r2-x1)/r1) alpha2=arcsin((y2+sin(alpha1)*r2-y1)/r1) alpha1=arccos((x2+cos(arcsin((y2+sin(alpha1)*r2-y1)/r1))*r2-x1)/r1) Weiter auflösen schaff ich jetzt gerade leider nicht, vllt. geht mit Additionstheoremen noch was. (Achja, damit dürftest du die Winkel berechnen können, du musst dann nur noch schauen, ob die in dem Bereich Startwinkel<=alpha<=Endwinkel liegen, wenn ja, dann ist das ein Schnittpunkt) |
Re: Schnittpunkt zweier Halbkreise berechnen?
Wie immer ist hier die Wahl des System und der Darstellung des Kreises wichtig. Sehr viele solcher Probleme sind in manchen Systemen kaum zu lösen und in anderen trivial.
Es sollte klar sein, dass du ein Zentrum in den Ursprung legen kannst und das andere an den Punkt (a,0). Jetzt hast du einen Kreis x^2+y^2=r_1^2 und einen anderen (x-a)^2+y^2=r_2^2 Jetzt setzt du die zweite Gleichung in die erste ein und hast x^2 + ((x-a)^2-r_2^2)=r_1^2 Du hast also für eine quadratische Gleichung in x, die schnell zu lösen ist. Zu den Lösungen kannst du dann noch die passenden y-Werte berechnen und bist fertig. Ist wahrscheinlich etwas schneller als die Version vom Borg. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 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