Autor Beitrag
Daniel L.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mo 04.06.18 13:53 
Hi,

kennt jemand zufällig ein Tool/Unit oder so, was aus 5 vorgegebenen Punkten eine Ellipse berechnen kann?
(z. B. die Lage der Hauptachsen oder eine Rechenanweisung, um beliebige ander Punkte zu berechnen)

ich bin zu lange aus der Mathe raus, um das ohne Riesenaufwand rauszutüffteln...

(Stichwörter: Allgemeine Kegelschnittgleichung, lineares Gleichnungssystem, Hauptachsentransformation...)

Gruß: Daniel L.
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: Di 05.06.18 17:08 
Hallo,

ich weiß wie deprimierend es sein kann, wenn keine Antworten eintrudeln. Ich gehe davon aus, daß Du selbst schon gesucht hast. Was ich gefunden habe (ohne die Sachen auszuprobieren) ist:

Tool: wiki.geogebra.org/de...unkte_%28Werkzeug%29

Jede Menge Mathe-Formuln: mathworld.wolfram.com/QuadraticCurve.html

Vielleicht hilft's ja weiter.
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Di 05.06.18 20:56 
Hallo Gammatester,

danke für deine Rückmeldung.

In der Tat habe ich schon viel gesucht, und bin auch auf deinen Seiten gelandet.
Die Infos von wolfram.com sind mir zu kompliziert, und mit geogebra lässt sich eine Ellipse auf 5 Punkten zwar super zeichnen,
aber es gibt keine mathematische/programmatische Erklärung.

Inwzischen ist es mit aber gelungen, ein Beispiel schriftlich und mit progamierbarem Taschenrechner zu berechnen, und aus 5 Punkten beliebig weitere auszurechnen.

Ausserdem habe ich DMath gefunden (Math library for Delphi, FreePascal and Lazarus),
da gibts schon mal ein linearen Gleichungslöser.

Ich werd versuchen, das zu verallgemeinern und mit Delphi umzusetzen.

Wenn ich nicht weiterkomm, werde ich hier noch mas was fragen...

Gruß: Daniel L.
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mo 18.06.18 10:30 
So, ich hab etwas in Mathe nachgesessen und folgendes ist dabei rausgekommen:

Grundsätzliches:

Eine Ellipse ist ein Kegelschnitt, aber nicht jeder Kegelschnitt ist eine Ellipse.
Eine Ellipse ist durch 5 Ellipspunkte eindeutig definiert, aber nicht jede 5 Punkte ergeben eine Ellipse.

Allgemein Kegelschnittgleichung: Ax^2 + By + Cy^2 + Dx + Ey + F = 0
Ein Koeffizient (z.B A) kann auf 1 gesetzt werden -->
x^2 + By + Cy^2 + Dx + Ey + F = 0

----------------------------------------------------------------

Folgendes wird benötigt:

Kegelschnittgleichung nach x aufgelöst (quadratische Gleichung):
(nach y aufgelöst wäre auch möglich, dann wären nachfolgende Gleichungen entsprechend modifiziert)

diskr = (D + By)^2 - 4*(F + Ey + Cy^2)
x1 = 0.5 * (-D - By - sqrt (diskr)) Gleichung I
x2 = 0.5 * (-D - By + sqrt (diskr)) Gleichung II


Definitionsbereich für y bilden, dafür diskr = 0 gesetzt und nach y' aufgelöst (quadratische Gleichung):

diskr' = CD^2 - BDE + E^2 + FB^2 - 4CF
nenner' = B^2 - 4C
restFaktor' = -B*D + 2*E
y1' = restFaktor' - 2*sqrt (diskr')) / nenner'
y2' = restFaktor' + 2*sqrt (diskr')) / nenner'


hier nochmal als Grafik:
ellipse5_2
-----------------------------------------------------------------

Vorgehensweise:

Gegeben: irgendwelche 5 Punkte (P0x/P0y) .. (P4x/P4y)


# Koeffizienten B..F berechnen:
P0 .. P4 jeweils in die Kegelschnittgleichung einsetzen,
man erhält ein lineares Gleichungssystem (5 Gleichungen mit 5 Unbekannten),
so kann B..F berechnet werden.

Jetzt kann man aus einem y zwei Ellipsenpunkte x1 und x2 berechnen (Gleichung I/II)
aber es kommen nur solche y in Frage, die eine positive diskr ergeben,
es muss also vorher der Definitionsbereich für y gebildet werden:


# Definitionsbereich für y:
diskr > 0 setzen und nach y' auflösen (quadratische Ungleichung):
dafür:
diskr = 0 setzen und nach y' auflösen (quadratische Gleichung),
ergibt 2 Lösungen (y1', y2') mit diskr', nenner' und restFatkor' - s. o.
diskr' muss > 0 sein und nenner' muss <> 0 sein (sonst Error)
Eine Zahl für y' zwischen y1' und y2' (yMean') in die Ungleichung Diskr > 0 einsetzen:

(D + B*yMean')^2 - 4*(F + E*yMean' + C*yMean'^2) > 0

Wenn diese Ungleichung wahr ist, dann liegt der Definitionsbereich für y' zwischen y1' und y2',
was schlussendlich auf eine Ellipse schliessen lässt.

# Ellipspunkte kreieren:
In beliebigen Schritten ein y zwischen y1' und y2' als y-Wert eines Ellipsenpunktes
nehmen und in Gleichung I und Gleichung II einsetzen:
es entsteht jeweils der x-Wert des Ellipsenpunktes.

# Mögliche Errors:
- lineares Gleichungssystem ergibt keine eindeutige Lösung
- Nenner' = 0
- Diskr' <= 0
- Definitionsbereich für y' liegt nicht zwischen y1' und y2'

Wenn ein Error vorliegt, ergeben die 5 Punkte keine Ellipse.
Es handelt sich dann entweder um eine Hyperbel, eine Parabel, einen entarteten Kegelschnitt,
oder die Kegelschnittgleichung ist garrnicht oder nicht eindeutig lösbar.

Ich bin dabei, mit Delphi eine entsprechende Unit mit einem kleinen Demoprogramm
zu programmieren.

Frage: Wo könnte ich das dann posten - auch in dieser Rubrik ?

edit: kann ich erst nach den Ferien fertigstellen - sry

Gruß : Daniel L.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Daniel L. am Do 21.06.18 15:15, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: ub60
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 20.06.18 02:05 
Moin!

user profile iconDaniel L. hat folgendes geschrieben Zum zitierten Posting springen:
Frage: Wo könnte ich das dann posten - auch in dieser Rubrik ?
Ich denke das sollte in Open-Source-Units oder Open-Source-Projekte passen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: Mi 20.06.18 18:15 
Danke erst mal für die ausführliche Beschreibung.
Auf das Programm bin ich schon gespannt ...

ub60