AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Gleichung umformen

Ein Thema von Bjoerk · begonnen am 16. Jan 2014 · letzter Beitrag vom 29. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2   
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Gleichung umformen

  Alt 16. Jan 2014, 13:56
Kann mir ja jemand mal bitte helfen? Ich suche den Schnittpunkt von Gerade und Ellipse.
Hierzu muß ich diese Formel (***) in eine ax^2 + bx + c Gleichung umformen. Ich schaffs nicht (mehr).

Delphi-Quellcode:
  XLine1, YLine1, XLine2, YLine2, // Rect Gerade
  aLine, bLine, // Geradengleichung
  XEllipse1, YEllipse1, XEllipse2, YEllipse2, // Rect Ellipse
  X, Y, // Mittelpunkt Ellipse
  aEllipse, bEllipse: double; // Ellipsengleichung
begin
  X := (XEllipse2 + XEllipse1) / 2;
  Y := (YEllipse2 + YEllipse1) / 2;
  aEllipse := (XEllipse2 - XEllipse1) / 2;
  bEllipse := (YEllipse2 - YEllipse1) / 2;
  XLine1 := XLine1 - X;
  YLine1 := YLine1 - Y;
  XLine2 := XLine2 - X;
  YLine2 := YLine2 - Y;
  bLine := YLine1 - XLine1 * (YLine2- YLine1) / (XLine2 - XLine1);
  aLine := -YLine1 / ((YLine2- YLine1) / (XLine2 - XLine1)) - XLine1;

  // Line(x, y) = x / aLine + y / bLine = 1;
  // -> y = bLine * (1 - x / aLine);

  // Ellipse(x, y) = x^2 / aEllipse^2 + y^2 / bEllipse^2 = 1;
  -> x^2 / aEllipse^2 + (bLine * (1 - x / aLine))^2 / bEllipse^2 = 1; // ***
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#2

AW: Gleichung umformen

  Alt 16. Jan 2014, 14:35
Zunächst einmal bekommst du ein Problem, wenn die Gerade senkrecht (oder auch nur fast senkrecht) ist. Den Fall musst du abfangen.

Als Tip für die Ellipse: Du machst ja bereits eine Transformation so daß der Mittelpunkt der Ellipse den Nullpunkt darstellt. Wenn du jetzt noch eine Transformation machst, die eine Ellipse in einen Einheitskreis verwandelt, wird die Berechnung der Schnittpunkte (es gibt 0..2) einfacher. Nur nicht vergessen, am Ende wieder zurückzutransformieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Namenloser

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

AW: Gleichung umformen

  Alt 16. Jan 2014, 15:18
Schon lange keine Geometrieaufgabe mehr gerechnet, deshalb habe ich mich mal dran versucht. Habe aber nicht überprüft, ob es stimmt, ohne Gewähr...

Die Gerade wird angegeben durch einen Punkt, der auf der Geraden liegt (s), und einen Richtungsvektor (v). Der Kreis liegt im Ursprung und hat den Radius 1.
Angehängte Grafiken
Dateityp: jpg schnittpunkt-kreis-gerade.jpg (47,5 KB, 55x aufgerufen)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Gleichung umformen

  Alt 16. Jan 2014, 16:03
OK. Das hab ich ja auch befürchtet, daß man die Fälle 90/180° abfangen muß. Außerdem gibt's ja noch Pie und Arc Schnittpunkte zu berechnen. Dann lass ich's lieber so wie ich’s hab (Berechnung der Schnittpunkte für Ellipse und Co. temporär in Polygon umwandeln und IntersectLines). Thanx!
  Mit Zitat antworten Zitat
Namenloser

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

AW: Gleichung umformen

  Alt 16. Jan 2014, 20:19
Wenn man mit Vektoren rechnet (siehe meine Lösung), muss man nichts abfangen.
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#6

AW: Gleichung umformen

  Alt 16. Jan 2014, 21:07
es kommt immer darauf an, wie man die Koordinaten einer Geraden beschreibt, jede Gerade, ist im Unendlichen eine Kurve !
Ich würd es auch auch meinem Vorredner nachmachen, wobei man bei einer Ellipse darauf achten muss, dass ein kreis auch eine Ellipse ist

vielleicht hilft Dir das weiter...
Christian
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Gleichung umformen

  Alt 27. Jan 2014, 19:09
Hätte nicht gedacht daß die Ellipse so viel komplizierter ist wie ein Kreis? Ist es möglich diese Gleichung nach Alpha umzustellen?

Phi = (B * Sin(Alpha)) / (A * cos(Alpha))
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Gleichung umformen

  Alt 27. Jan 2014, 20:34
Alpha := ArcTan(Phi * A / B); , in Rad, A <> 0, B <> 0.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#9

AW: Gleichung umformen

  Alt 27. Jan 2014, 21:21
Alpha := ArcTan(Phi * A / B); , in Rad, A <> 0, B <> 0.
Lässt sich übrigens auch über Wolfram Alpha rauskriegen
solve Phi = (B * Sin(Alpha)) / (A * cos(Alpha)) for alpha
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Gleichung umformen

  Alt 27. Jan 2014, 21:37
Ok. Vielen Dank. Man macht das wohl noch anders.. Weiß jemand wie diese Formel für p^2 zu benutzen ist, falls b > a?

// Edit

Also das mein ich:
Delphi-Quellcode:
    Eps := Sqrt(A * A - B * B) / A;
    ACos := Cos(DegToRad(Phi));
    ASin := Sin(DegToRad(Phi));
    P := Sqrt(B * B / (1 - Eps * Eps * ACos * ACos));
    X := X1 + P * ACos;
    Y := Y1 + P * ASin;

Geändert von Bjoerk (27. Jan 2014 um 21:47 Uhr) Grund: // Edit:
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:27 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 by Thomas Breitkreuz