Punkt auf Ellipsensegment

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von christian_B.

    Punkt auf Ellipsensegment

    Hallo Forum,
    leider stehe ich gerade für eine für mich unlösbare Aufgabe. Ich habe dazu schon das Forum durchforstet sowie verschiedene andere Websites, jedoch verstehe ich absolut null von den Formeln dort.

    Ich will auf einem Ellipsensegment einen Punkt auf dem Umfang berechnen mithilfe des Mittelpunktes und eines Winkels. Gegeben sind zudem die Höhe und Breite, sowie ein Anfangspunkt und Endpunkt(Es handelt sich um ein Direct2D Arc Segment). Leider sind meine Mathe Kenntnisse sehr begrenzt.

    Kann mir hier jemand weiterhelfen?

    Hintergrund:
    Ziel ist es eine Anzeige für Triebwerksparameter zu programmieren, so wie im Bild. Gesucht ist der Punkt an dem der weiße Strich aus der Mitte des Schaubilds auf die Ellipse trifft, damit ich mittels Direct2D Geometire den grauen Hintergrund sowie diesen Strich zeichnen kann. Vom Simulator bekomme ich den Wert bspw. 24.0, diesen will ich mit einem Faktor multiplizieren um den benötigten Winkel herauszubekommen.

    Im Bild ist ein Kreis gezeichnet, es handelt sich aber bei mir um eine Ellipse.

    Gruß
    Christian
    @christian_B Probierma eine andere Herangehensweise:
    Eine Ellipse ist nichts weiter als ein gestauchter Kreis: Setze den Koordinatenursprung in den Mittelpunkt, x läuft normal, y bekommt einen Faktor (hier: ca. 0.8).
    Berechne Deine Koordinaten x, y in Kreis-Koordinaten und stauche die hinterher.
    Dabei ist es unerheblich, ob Du mit Sin, Cos oder Wurzel arbeitest.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vollzitat entfernt ~ EaranMaleasi

    @RodFromGermany Super Danke!
    Das war die Lösung bzw. ist hinreichend genau für mein Programm.

    Falls jemand mal auf das selbe Problem trifft, hier der Code wie ich es dann gelöst habe.

    VB.NET-Quellcode

    1. Dim radWinkel As Double
    2. radWinkel = DegToRad(Winkel) ' Grad zu Radiant konvertieren
    3. Dim X = Math.Cos(radWinkel) * 49 'Radius = 49
    4. Dim Y = Math.Sin(radWinkel) * 49
    5. D2D_RenderTarget.DrawLine(D2D_BrushRED, New PointF(92, 85), New PointF(X + 92, (Y * 0.8) + 85))
    6. 'Mittelpunkt = 92,85 ; 0.8 Faktor für Y Stauchung

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