Grafik drehen



  • Hi!

    Es geht um ein grafische und mathematisches Problem. Ich habe eine 2D-Darstellung von einem Cad-File (also zum Beispiel eine Kuh oder so...) auf der XY-Achse. Ich möchte das Bild jetzt aber an der Z-Achse drehen. Ich habe auch schon eine Formel dafür gefunden:

    A(xy) = Mx + sin(grad*(2*pi/360)*x; //das gilt für den X-Wert, M ist der Mittelpunkt auf der X-Achse und x der alte X-Wert.

    für Y sieht das dann so aus:

    A(xy) = My + cos(grad*(2*pi/360)*y;

    Der Quellcode sieht dann so aus:

    sxgo = (MiddleX + sin(10*(2*3.14/360))*(x[t]))*sf + MiddleX-200;
          sygo = MiddleY + cos(10*(2*3.14/360))*(y[t]-MiddleY)*sf;
          pCanvas->Pixels[sxgo][sygo] = clBlack;
    

    sf ist ein Multiplikator, der das Bild auf Fenstergröße setzt. Klapp ja auch alles ganz vorzüglich, ausser dass das Bild plötzlich ziemlich gequetscht wird. Die Y-Werte stimmen, leider aber nicht die X-Werte, die sind zu klein. Ist vielleicht die Formel falsch? Leider setzt er auch nicht um 10° weiter, sonder um 180, warum auch immer.

    Vielleicht hat jemand ja schon mal sowas programmiert und kann mir helfen.

    Gruß

    Hoeen



  • Verschoben nach "Spiele/Grafik".



  • Diese Frage hatte wir schon oft, man sollte mal einen FAQ Eintrag machen... 😉



  • Vielleicht hilft dir das hier



  • sorry, hab ich nicht dran gedacht, aber bitte nicht gleich umbringen 😉

    Die Quelle ist super! Danke sehr!



  • mir muss leider doch nochmal geholfen werden. Bin noch relativer newbie im grafikbereich. ich hoffe es sei mir verziehen 🙂

    also das ist der quellcode:

    radWinkel = (winkel/180) * pi;
          radius = sqrt((x[t]-Image1->Width/2)-(x[t]-Image1->Width/2)+(y[t]-Image1->Height/2)*(y[t]-Image1->Height/2));
          sxgo = (cos(radWinkel) * radius) * sf + Middle;
          sygo = (sin(radWinkel) * radius) * sf;
          pCanvas->Pixels[sxgo][sygo] = clBlack;
    

    x[t] ist ein Pointer, der auf ein Array zeigt, das die x-koordinaten des Bildes enthält. Das selbt gilt für y[t]. sf ist ein Faktor, der das bild skalliert. Middle schickt das bild in die Mitte.

    Leider habe ich jetzt folgendes Problem. Dieser Code rotiert nicht, sondern erstellt einen Strich in das TImage. Leider habe ich wirklich keine Ahnung warum, der die Rechnung stimmt so, glaube ich.

    Kann mir vielleicht nochmal jemand helfen...


Anmelden zum Antworten