Mathe-Problem: Steigung an einem Ellipse-Punkt

  • Sonstige

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Mathe-Problem: Steigung an einem Ellipse-Punkt

    Ich hab ein ernstes mathematisches Problem mit Ellipse-Segmenten:

    In Wpf werden obige 3 Figuren so formuliert:

    Quellcode

    1. a40,20, 00, 1,1, 40,0
    2. a40,20, 30, 1,1, 40,0
    3. a40,20, 45, 1,1, 40,0
    Dabei bedeuten
    a40,20 horizontaler, vertikaler Halbmesser, wird in Mathe-büchern auch als a, b bezeichnet
    00, 30, 45 sind Beispiele verschiedener Kipp-Winkel in Deg.
    1,1 nicht wichtig
    40,0 ist der Ziel-Punkt, also wo das KreisSegment endet.

    Für eine Verbesserung der Wpf-Geometry-Definitions-Sprache bräuchte ich nun die Steigungen am Start- und Ziel-Punkt. Dann könnte ich eine optionale Anweisung proggen, die die nächste Figure automatisch knickfrei connectet - ohne dass man gross rumprobieren muss.
    Also gegeben sind:
    Startpunkt, beide Halbmesser, Zielpunkt und Kippung der Ellipse.
    Und rauskommen müssten die Steigungen an Start- und Zielpunkt.

    Zur etwas Vereinfachung kann man den Startpunkt als Nullpunkt nehmen, und den Zielpunkt als immer auf der X-Achse liegend (so wie im Bildle halt).

    Ich hab auch etwas recherchiert, es gibt eine Ellipsen-Gleichung: y/b²-x/a²=1 und eine Tangenten-Gleichung: xx1/a²+yy1/b²=1
    Aber ich werd nicht schlau draus, weil ich nicht weiß, was xx1, yy1 bedeuten, im Unterschied zu x, y.
    Und sowieso kann ich aus den mir gegebenen Parametern nicht den Ellipse-Mittelpunkt berechnen - den bräuchte man glaub, oder?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ErfinderDesRades schrieb:

    Aber ich werd nicht schlau draus, weil ich nicht weiß, was xx1, yy1 bedeuten, im Unterschied zu x, y.
    Ich denke, das die Punkte x,y und x1,y1 die Tangente (Gerade) beschreiben und einer der beiden Punkte der Berührungspunkt an der Ellipse entspricht...

    mathematische-basteleien.de/ellipse.htm
    hmm - x1, y1 taucht aber garnet auf - die Rede ist ja von xx1, yy1.
    Du meinst also, xx1,yy1 seien einfach andere Bezeichner als x1,y1 ?

    Jo, vlt. kann ich dann eine Tangente ausrechnen, wenn ich den Ellipsen-Nullpunkt hätte.
    Zumindest werd ich mal probieren, ob ich bei gegebenem Nullpunkt die Tangenten rauskrieg. Falls ja, würde sich meine Fragestellung verschieben/eingrenzen auf:

    gegeben a, b, φ (Kippung) der Ellipse, sowie x1,y1 x2,y2 - Start- und Endpunkt des Ellipsen-Segments.
    Wo liegt der Ellipsen-Mittelpunkt x3,y3 ?
    Die Gleichung einer Ellipse lautet

    x² / a² + y² / b² = 1

    Der Mittelpunkt der Ellpse ist dann der Ursprung des Koordinatensystems und a und b sind die Halbachsen der Ellipse. Die Halbachsen der Ellipse liegen dann parallel zu den Koordinatenachsen.

    Wenn der Mittelpunkt der Ellipse nicht der Ursprung des Koordinatensystems ist und vor allem, wenn die Ellipse "gedreht" ist, dann werden die Gleichungen wesentlich komplizierter.

    Die Gleichung der Tagente in einem Ellipsenpunkt x1 | y1 lautet fü den o.a. einfachen Fall:

    x * x1/a² + y * y1 / b² = 1

    Für den komplexen Fall (Verschiebung Drehung) ist auch diese Formel sehr viel komplexer.
    Jo, das hab ich denn verstanden (xx1 == x*x1), und so weit bin ich jetzt:

    Man muss also zu einem gegebnen x1 mit der Ellipse-Formel das y1 ausrechnen, dann hat man x1,y1.
    Dann ein ausserhalb der Ellipse ein x festlegen und mit der TangentenFormel das y berechnen, wo die Tangente das x schneidet - dann hat man x,y eines Tangentenpunktes ausserhalb der Ellipse.
    Dann kann man die Tangente malen :)
    Ausserdem FallUnterscheidung, denn bei x1 = a gibts keinen Tangentenschnittpunkt.

    Jetzt aber noch das wirklich ernste Problem:
    Ich hab den Mittelpunkt der Ellipse nicht, ich hab nur a, b, und die beiden Punkte einer Sekante (Start-, End-Punkt des ArcSegments - s. post#1 - Bildle).
    Und an diesen Schittpunkten brauche ich die Tangenten, um meine Zeichnungen dort knickfrei fortsetzen zu können.
    Oder hier Bildle ohne Drehung:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo EDR,

    Sehe ich das richtig, dass du sowas hast?
    Ellipse.pdf
    (Also mit a(a),(b), (alpha), 1,1, (h_1),(h_2))

    Grüsse,

    Higlav
    ja, genau.

    also so wie inne zeichnung - mit einfach h. Deine h_1, h_2 im post verstehe ich schon wieder nicht.
    vlt. denkst du beide Bildle als zusammengehörige aufgabe, aber nein, es sind 2 Beispiele, wie das Problem aussehen kann.
    Und man kann entweder wie in post#1 die Sekante als waagerecht annehmen, und dann ist der Winkel gegeben, oder man sieht die Ellipse als Waagerecht, und dann ist x,y des 2. Schnittpunktes gegeben.
    (Der erste Schnittpunkt wird als Ursprung aufgefasst)

    Also nochmal: die Ellipse mit a, b, alpha.
    Dazu eine waagerechte Sekante der Länge l (hhast dus jetzt genannt) am Ursprung.

    Wie kriege ich die Tangenten an den Sekanten-Schnittpunkten?
    Bzw. wie kriege ich den Mittelpunkt der Ellipse - dann krieg ich das mit den Tangenten glaub schon hin.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Also vielleicht noch ein bissl Theorie.

    Eine Ellipse kann man sich als "Stauchung" eines Kreises vorstellen ... man verringert alle y-Werte eines Kreises um einen konstanten Faktor und erhält daraus die Ellipse. Hier die Rechnung:

    x² + y² = a² (Kreisgleichung)

    y --> (a / b) * y (Stauchungsfaktor)

    x² + (a / b)² * y² = a²

    x² / a² + y² / b² = 1 (durch Kürzen mit a²)

    Danach könnte man die Gleichung der Mittelsenkrechten durch die beiden Sekanten Schnittpunkte berechnen (Punkt-Steigungs-Form der Geradengleichung).

    Dies liefert eine Gleichung der Gestalt

    y = m * x + n

    Die Steigung m "stauchen" wir um den Faktor a / b und erhalten damit die Gleichung der Geraden durch das Zentrum der Ellipse.

    y = (a / b) * m * x + n

    Diese Gerade schneiden wir mit der Ellipse und erhalten zwei Schnittpunkte. Der Mittelpunkt ist das gesuchte Zentrum.

    Ich weiß nicht, ob das dein Problem löst ... aber vielleicht klappt es ja.

    LG
    Peter

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Peter329“ ()

    Uh - zunächst fand ich das ja nix neues, aber jetzt mit 2 Bier - vlt. kann man über die "gestauchte" Senkrechte der Sekante auf den Mittelpunkt schließen - zumindest auf eine Gerade, die durch den Mittelpunkt geht.
    Aber oioioi, uff uff - die Zellen ächzen!
    Nicht dass ich noch ganz blöde werde, aufgrund von Überanstrengung im Kopp.
    Wäre es nicht einfacher (vernünftiger) wenn du deine Ellipsen einfach mittels Sin und Cos definierst und bei Bedarf entsprechend rotierst?

    Private Function CreateEllipse(ByVal np As Int32, ByVal nPeriods As Double, ByVal AFact As Double) As Int32

    Dim R, Phi, PhiStep, PhiMax As Double
    Dim x, y As Double
    Dim i As Int32
    Dim A As Double
    ReDim PolyF(np - 1)
    PhiMax = 2 * PI
    PhiStep = PhiMax / (np - 1)
    'Phi0 = 0
    R = 1
    For i = 0 To np - 1
    Phi = i * PhiStep

    x = R / 1 * Cos(Phi + Phi0)
    y = R / 2 * Sin(Phi + Phi0)
    PolyF(i).X = CSng(x) ' Könnte man auch mit obigen 2 Zeilen vereinen. Hier ist die Zuweisung bewußt getrennt gehalten
    PolyF(i).Y = CSng(y)
    Next i

    Return np

    End Function

    Dann brauchst du auch den Mittelpunkt nicht zu bestimmen ;-). Die Segmente erhältst du, indem du Anfangs und Endwinkel und Phasenlage variierst.

    Gruß,

    Klaus
    Nicht dass ich noch ganz blöde werde, aufgrund von Überanstrengung im Kopp.


    Na, das würde ich mir natürlich nie verzeihen, wenn ich - ausgerechnet bei meinem VB Mentor - dafür verantwortlich zeichnen sollte. :)

    Was weißt du denn von der Ellipse ... hast du davon eine Gleichung ... ? Wenn die Achsen der Ellipse parallel zu den Koordinaten Achsen sind und die Ellipse allenfalls verschoben aber nicht gedreht ist, dann genügen VIER Punkte, um die Gleichung der Ellipse zu erstellen. Denn es sind vier Unbekannte zu ermitteln: a, b und die Koordinaten des Mittelpunkts.

    Bei einem Ellipsen-Segment muss man dann natürlich noch die Koordinaten von Anfangs- und Endpunkt kennen.

    Ich tu mich ein bissl schwer damit, mathematisch etwas beizutragen, wenn ich nicht weiß, welche Informationen dir gegeben sind.

    LG
    Peter

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()

    ErfinderDesRades schrieb:

    Nein, die Ellipse kann ich nicht selbst definieren, die ist definiert, wie angegeben.
    Es ist ja auch nicht wirklich eine Ellipse, sondern genau genommen ein Ellipsen-Segment.


    Macht ja nichts, wenn du weißt, wo die Ellipse, bzw. das Segment sitzt, kannst du sie auch rechnerisch per Parametergl. darstellen. Da ist die Rechnerei wesentlich einfacher als mit der Kreis, bzw. Ellipsengleichung.

    Übrigens sieht das xx1 nach einer seit langem gebräuchlichen Schreibweise aus: xx steht für xinPixel nach Umrechnung von weltlichen Koordinaten x (in mm oder m). Die 1 ist nur ein Index.

    Hier noch ein netter Beitrag zur Ellipse: activevb.de/tipps/vb6tipps/tipp0720.html

    - Klaus

    Peter329 schrieb:

    Ich tu mich ein bissl schwer damit, mathematisch etwas beizutragen, wenn ich nicht weiß, welche Informationen dir gegeben sind.
    ich habs jetzt doch des öfteren erwähnt:

    Gegeben ist:
    a - Halbmesser in X-Richtung,
    b - Halbmesser in Y-Richtung,
    SekantenPunkt P0 am Ursprung,
    SekantenPunkt P1(x,y) irgendwo auf der Ellipse.

    Oder in anderer Sichtweise, gegeben ist:
    a - Halbmesser in X-Richtung,
    b - Halbmesser in Y-Richtung,
    alpha - Kippwinkel,
    SekantenPunkt P0 am Ursprung,
    Sekantenlänge l(x).

    ErfinderDesRades schrieb:

    Gegeben ist:
    a - Halbmesser in X-Richtung,
    b - Halbmesser in Y-Richtung,
    SekantenPunkt P0 am Ursprung,
    SekantenPunkt P1(x,y) irgendwo auf der Ellipse.


    Und jetzt möchtest du die Ellipse fortsetzen in Richtung der Tangente im Punkt P1 ?

    Das ist doch kinderleicht!

    Wir kennen die Gleichung der Tangent an die Ellipse im Punkt P1(x1, y1):

    x * (x1 / a²) + y * (y1 / b²) = 1

    Und das ist die gewünschte Fortsetzung deiner Ellipse! Daraus kannst du mit elementaren Umformungen alles berechnen, was du zum Zeichnen der Fortsetzung benötigen könntest: Steigung, Winkel, Achsenabschnitt ... Fertisch !

    ErfinderDesRades schrieb:

    Oder in anderer Sichtweise, gegeben ist:
    a - Halbmesser in X-Richtung,
    b - Halbmesser in Y-Richtung,
    alpha - Kippwinkel,
    SekantenPunkt P0 am Ursprung,
    Sekantenlänge l(x).


    Das verstehe ich jetzt nicht! Wenn die Ellipse gedreht ist, dann gibt es keinen Halbmesser in x-Richtung bzw. y-Richtung ! Vielleicht sind das aber einfach die Halbachsen, die jetzt um den Kippwinkel gedreht sind ?

    Und wo ist denn hier der Punkt P(x1, y1) von dem aus du die Ellipse fortsetzen willst Muss man den aus der Sekantenlänge errechnen ?

    Irgendetwas fehlt da.

    Aber ganz allgemein: Wenn die Ellipse um den Winkel alpha gedreht ist, dann stellst du einfach die Gleichung der ungedrehten Ellipse mit den Halbachsen a und b auf. Wenn du die Ellipse im Punkt P1 fortsetzen willst, dann musst du das Abbild dieses Punktes bei der Drehung um den Winkel alpha berechnen. Das ist ein Spezialfall einer affinen Abbildung. Wie die Matrix dafür lautet kann ich dir bei Bedarf sagen.

    Dann berechnest du die Tangente im Bildpunkt von P1 wie im ersten Fall und ermittelst deren Steigung ... Danach drehst du die Steigung um den Winkel alpha "zurück" ... dazu braucht man das Additionstheorem für den Tangens. Auch das könnte ich dir zukommen lassen. Und mit dem Punkt P1 und dieser Steigung kannst du nach der Punkt-Steigungsform die gesuchte Geradengleichung aufstellen. Fertisch.

    LG
    Peter

    Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von „Peter329“ ()

    natürlich gibt die Halbmesser: halt die Hälfte des größten und des kleinsten Durchmessers (ok - sind dann nicht mehr x- und y-gerichtet).

    Der Punkt P(x1,y1) liegt auf der X-Achse, deswegen benötigt man nur eine Länge. Oder als Punkt: P(x,0).

    Wenn diese Sichtweise ungünstig ist, dann orientier dich doch an der anderen - da gibts keinen KippWinkel, und P1 hat x und y.

    ErfinderDesRades schrieb:

    Der Punkt P(x1,y1) liegt auf der X-Achse, deswegen benötigt man nur eine Länge. Oder als Punkt: P(x,0).


    Na also, dann heißt der Punkt eben P1(x1, 0).

    Und mit diesem Punkt führst du die Rechnung aus, die ich oben beschrieben habe. Das sind alles ganz elementare Rechenoperationen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()

    Hallo EDR

    Hier eine Excel-Datei die ich soeben kurz gemacht habe. Alle Formels hab ich ausdem Wikipedia.

    Leider lässt sich das in Excel nicht so schön darstellen, aber die Werte sollten Stimmen.

    Die Formeln stehen in den Zellen, wie auch der Winkel der Tangende. Du kannst bei der rosa markierten Stelle deinen x-Wert eingeben und schon zeichnet er die Tangende und gibt auch die entsprechenden Winkel raus.

    Edit: Eine ausgebesserte Variante

    Freundliche Grüsse

    exc-jdbi
    Dateien
    • Elipse.zip

      (11,54 kB, 121 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()