Laden...

[gelöst] Berechnung eines Ellipsenabschnitts

Erstellt von Troubadix vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.875 Views
Troubadix Themenstarter:in
25 Beiträge seit 2011
vor 11 Jahren
[gelöst] Berechnung eines Ellipsenabschnitts

Hallo,

ich brauche mal eure Hilfe bei einem Mathematischen Problem.

Ich arbeite im Moment an einem Programm, dass G-Code grafisch darstellen kann. Dazu verwende ich WPF. Speziell verwende ich einen Path um die Darstellung zu erreichen.
Das funktioniert auch so weit ganz gut. Nun habe ich aber ein Problem mit der Berechnung eines Ellipsenabschnitts.

Ich verwende ArcSegment um Kreise bzw. Ellipsen zu zeichnen.
Wie Ihr ja sicher wisst braucht ArcSegment folgende Parameter für eine Ellipse:

  • Endpunkt
  • Drehrichtung
  • die zwei Radien
  • Verdrehwinkel
  • über oder unter 180°

Aus dem G-Code bekomme ich aber

  • Endpunkt -> kann ich direkt verwenden
  • Drehrichtung -> kann ich direkt verwenden
  • Verdrehwinkel -> kann ich direkt verwenden
  • Mittelpunkt
  • Verhältnis von Hauptachse zu Nebenachse (Werte von 0 bis 1)

Ich muss also aus den Daten die mir der G-Code liefert noch die beiden Radien berechnen und ob der Abschnitt mehr als 180° hat.
Die Berechnung ob der Abschnitt mehr als 180° hat kann ich aus der entsprechenden Berechnung für Kreise ableiten (wenn die nicht sogar schon funktioniert).

Mein Problem ist also die Berechnung der beiden Radien. Kann mir da jemand weiter helfen?

Mir ist klar, dass dies eher ein Mathematisches als ein Programmierproblem ist. Aber ich hoffe das hier jemand die entsprechenden mathematischen Kenntnisse besitzt.

Gruß
Troubadix

C
2.121 Beiträge seit 2010
vor 11 Jahren

Ohne zu wissen was G-Code ist...

Du hast den Mittelpunkt und einen Endpunkt, wie es scheint den längeren. Daraus kannst du mit Pythagoras den größeren Radius berechnen.
Das Verhältnis der Achsen bringt dich dann direkt zum kleineren.
Oder nicht?

Troubadix Themenstarter:in
25 Beiträge seit 2011
vor 11 Jahren

Hallo chilic.

Daraus kannst du mit Pythagoras den größeren Radius berechnen.

Leider geht das nicht so einfach. Der Endpunkt kann ja irgendwo auf der Ellipse liegen. Ich würde also einen beliebigen Radius bekommen und nicht unbedingt den großen.

925 Beiträge seit 2004
vor 11 Jahren

Schnelle Antwort, ohne lange drüber nachzudenken: leite ab und guck, wo die lokalen Maxima und Minima liegen. Darüber solltest du den kleinsten und größten Radius bekommen können. Kompliziert, aber was besseres fällt mir gerade nicht ein...

C
2.121 Beiträge seit 2010
vor 11 Jahren

Ok dann wirds knifflig.
Dann anders.
Drehe den Endpunkt um den Mittelpunkt, und zwar um den Verdrehwinkel zurück (also negativ) und setze das ganze Gebilde so, dass der Mittelpunkt auf (0,0) steht. Dann kannst du einfach mit einer ungedrehten Ellipse im Koordinatensystem rechnen. Skizze machen!
Du hast also die Radien senkrecht aufeinander stehen und weißt das Verhältnis davon. Und du hast einen Punkt, durch den die Ellipse gehen muss. Hier wird anschaulich, dass es nur eine Ellipse geben kann, die mit dem gegebenen Verhältnis der Radien durch diesen Punkt geht.

Jetzt solltest du mit der Ellipsengleichung weiterkommen. In die setzt du das Verhältnis der Radien ein (ersetzt damit einen Radius durch den anderen) und setzt dann die Koordinaten des Punkts ein. Damit sollte dann einer der Radien rauskommen, den anderen kriegst du über das Verhältnis.

Troubadix Themenstarter:in
25 Beiträge seit 2011
vor 11 Jahren

Danke für die Antworten.

Ich werde den Trick mit dem drehen und der Ellipsengleichung mal ausprobieren. Das klingt machbar.

[EDIT] Hab's hin bekommen.

Gruß
Troubadix