Hilfe bei trigonomischen Berechnungen

  • C++/CLI

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

    Hilfe bei trigonomischen Berechnungen

    Hallo zusammen,

    ich weiß, es ist peinlich, aber leider habe ich wohl damals in der 9. Klasse bei Trigonometrie nicht richtig aufgepasst und brauche Hilfe :/ .
    Es ght um ein kleines elektronisches Projekt - eine analoge Anzeige wird auf einem TFT-Display gezeichnet.
    Das Projekt selbst wird in C++ umgesetzt.
    Da durch die vorgegebene Skala der Startpunkt des Zeigers ausßerhalb des Displays liegt um den richtigen Winkel zu erwischen, möchte ich nur Zeichnen, was auch wirklich angezeigt wird, das spart wertvolle Resourcen des kleinen Mikrocontrollers.
    Gesucht wird nun der Schnittpunkt/Eintrittspunkt des Zeigers oder die mit 'h' markierte Höhe (siehe Bild).
    Alle Werte des orangen Dreiecks sind vorhanden und die Displaygröße ist bekannt.

    Kann mir bitte Jemand helfen, den Schnittpunkt zu berechnen?



    Viele Grüße und ein schönes Wochenende!

    PS: Das Display steht hochkannt und ist 240Px breit und 320Px hoch.
    PPS: Die Nadel wird so gezeichnet:

    C-Quellcode

    1. #define DEG2RAD 0.0174532925
    2. void drawNeedle(uint8_t percent) {
    3. double scale = map(percent, 0, 100, 57, 123);
    4. double arc = scale * DEG2RAD;
    5. int16_t x1 = -115 + 193 * sin(arc);
    6. int16_t y1 = 160 + 193 * cos(arc);
    7. // blaues Rechteck
    8. tft.drawRect(0, min(160, y1), x1, max(160, y1) - min(160, y1), ILI9341_BLUE);
    9. // Nadel
    10. tft.drawLine(-115, 160, x1, y1, ILI9341_RED);
    11. }

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

    Ich würde mal sagen:
    2. Strahlensatz
    Aber egal wie du rechnest, die einfachste Methode ist, die Höhe des schwarzen Dreiecks zu berechnen und dann von der "Höhe bekannt" abzuziehen.
    Du kannst aber auch die obere blaue Linie gedanklich bis ganz nach links ziehen, dann kannst du in diesem Dreieck mit Strahlensatz rechnen.

    Aber Trigonometrie ist bei mir Jahrzehnte her, für genaue Algorithmen müsste ich erst nachdenken.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    also die waagerechte Linie unten vom Startpunkt aus nenne ich mal R
    Und den Teil von R, der über dem Display verläuft, nenne ich Rd.

    dann ergibt sich das Verhältnis Rd/R genau wie h?/höhe bekannt.
    Also Rd/R = h?/höhe bekannt

    Das umstellen zu
    höhe bekannt*(Rd/R) = h?

    (glaub ich)