Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   allgemeine Gleichung von Schnitpunkten 2er Kreise ? (https://www.delphipraxis.net/44881-allgemeine-gleichung-von-schnitpunkten-2er-kreise.html)

Kedariodakon 26. Apr 2005 12:03


allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Ich suche gerade ne allgemeine gleichung zur Berechunng, ich weiß, dass ne Kreisgleichung wie folgt aussieht:

(X-Mx)² + (Y-My)² = R²

da ich 2 habe macht das:

1: (X-M1x)² + (Y-M1y)² = R1²
2: (X-M2x)² + (Y-M2y)² = R2²

Wie komm ich nun auf die dumme Quadratische Gleichung? um zu den 2, 1 oder garkeinen Punkt zu kommen und alle, falls sie gleich sind ^^

Da ich das allgemein brauch, peil ich schon gar net mehr durch :wall:

Ich steh irgendwie mächtg aufm Schlauch, man das is so lang her ^^

Mag wer helfen`?

Kedariodakon 26. Apr 2005 12:34

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Past das schon mal so, oder hab ich mich verrechnet?

shmia 26. Apr 2005 12:36

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
[quote="Kedariodakon"]Ich suche gerade ne allgemeine gleichung zur Berechunng, ich weiß, dass ne Kreisgleichung wie folgt aussieht:

(X-Mx)² + (Y-My)² = R²

da ich 2 habe macht das:

1: (X-M1x)² + (Y-M1y)² = R1²
2: (X-M2x)² + (Y-M2y)² = R2²

Wie komm ich nun auf die dumme Quadratische Gleichung? um zu den 2, 1 oder garkeinen Punkt zu kommen und alle, falls sie gleich sind ^^
[quote]
* Alle Punkte sind gleich, wenn der Mittelpunkt und der Radius beider Kreise gleich ist.
* es gibt genau einen gemeinsamen Punkt, wenn der Abstand der Mittelpunkte gleich der Summe oder Differenz beider Radien ist:
Delphi-Quellcode:
  mabstand := SQRT((M1x-M2x)^2+(M1y-M2y)^2); // Abstand der Mittelpunkte

  if mabstand = R1+R2 then
     ShowMessage('Berührung; 1 Punkt')
  else if mabstand < R1+R2 then
    ShowMessage('2 Schnittpunkte')
  else
    ShowMessage('keine Schnittpunkte');
nicht berücksichtigt ist, wenn der Mittelpunkt eine Kreises im anderen Kreis liegt.

Kedariodakon 26. Apr 2005 12:56

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Nu bin ich so weit und steh voll aufm Schlauch, ich komm einfach net zu der Quadratischen gleichung der For: x²+p*x+q=0

So weit bin ich nun schon:
(ich hoffe das past ^^)

Na klasse und nu will der Formeleditor net werter machen, weil die Formael zu groß ist...
So ein sch***....



Edit: Ok ich glaub ich hab es, wär nett, wenn da mal jemand rüberschauen könnte, ich werd das mal in Code umwandeln, mal schaun obs past :zwinker:

Kedariodakon 26. Apr 2005 14:29

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Ok passt mal gar nicht, bei

M1( 414 ; 248 )
M2( 414 ; 5 )
R1 = 243
R2 = 2 * R1 * Sin( 36° ) ~ 285,66363261

gibts bei meiner Formel ne 0er Division :wall:
Und das auch verständlicher weise :nerd:


Weiter gehts :coder:

Jasocul 26. Apr 2005 14:56

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Ich erinnere mich dunkel, dass wir damals eine Koordinatenverschiebung verwendet haben.
Dadurch wurde (X-M1x)^2 zu M1x^2 und entsprechend bei M2x.
Das ist aber schon lange her. Schlag mich also nicht, wenn der Ansatz nicht ganz korrekt ist.
Der Grundgedanke war, einen Term zu vereinfachen.

Kroko1999 26. Apr 2005 14:59

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Delphi-Quellcode:
  TPunkt = record
             X,Y: real;
           end;
  TKreis = record
             Mx,My: Integer;
             R: Word;
           end;

procedure Kreisschnittpunkte (AK1,AK2: TKreis; var P1,P2: TPunkt);
var
  A1,C1,F1,
  A2,C2,F2,
  A,C,F,
  Ha,Hb,Hc,P,Q,D: Real;
begin
  P1.X := NAN; //keine Lösung
  P2.X := NAN; //keine Lösung
  // x²+ax+b+y²+cy+d=e
  A1 := -2*AK1.Mx;
  C1 := -2*AK1.My;
  A2 := -2*AK2.Mx;
  C2 := -2*AK2.My;
  // x²+ax+y²+cy=f f=e-b-d
  F1 := Sqr(AK1.R)-Sqr(AK1.Mx)-Sqr (AK1.My);
  F2 := Sqr(AK2.R)-Sqr(AK2.Mx)-Sqr (AK2.My);
  // x²+ax+y²+cy-f=x²+ax+y²+cy-f
  // nach Y umstellen
  C := (C1-C2);
  A := (A2-A1)/C;
  F := (F1-F2)/C;
  // y= ax+f
  // in Kreis 1 einsetzen
  Ha := Sqr(A)+1;
  Hb := A1+2*A*F+C1*A;
  Hc := Sqr(F)+C1*F-F1;
  // Normalform
  P := Hb/Ha;
  Q := Hc/Ha;
  // lösen
  D := Sqr(P/2)-Q;
  if D>0 then
    begin
      P1.X := -P/2-Sqrt(D);
      P2.X := -P/2+Sqrt(D);

      P1.Y := +Sqrt(Sqr(AK1.R)-Sqr(P1.X-AK1.Mx))+AK1.My;
      P2.Y := -Sqrt(Sqr(AK2.R)-Sqr(P2.X-AK2.Mx))+AK2.My;
    end
  else
    if Math.IsZero(D,1E-08) then
      begin
        P1.X := -P/2;
        P1.Y := Sqrt(Sqr(AK1.R)-Sqr(P1.X-AK1.Mx))+AK1.My;
      end;
end;
liefert die Schnittpunkte im 1.Quadranten, ansonsten Vorzeichen der Wurzel für P.Y ändern!

viel Spaß


//EDIT: Optimierungen sind absichtlich weggelassen :)

Kedariodakon 26. Apr 2005 15:02

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Ich teste das mal ^^

gordon freeman 26. Apr 2005 15:45

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hab mich mal drangemacht:

Das sind die allgemeinen Herleitungen für die Koordinaten der Schnittpunkte, wenn die Koordinaten der Mittelpunkte M und die Radien bekannt sind.

Hoffe, das es das ist, was du brauchst.

mfg

ibp 26. Apr 2005 15:58

Re: allgemeine Gleichung von Schnitpunkten 2er Kreise ?
 
Zitat:

Zitat von gordon freeman
Hab mich mal drangemacht:

Das sind die allgemeinen Herleitungen für die Koordinaten der Schnittpunkte, wenn die Koordinaten der Mittelpunkte M und die Radien bekannt sind.

Hoffe, das es das ist, was du brauchst.

mfg Martin Skrodzki

dann löse Dein Ergebnis doch mal nach y auf....


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz