Kreisalgorithmus :(



  • Hi Leute,
    ich habe mir eine kleine Funktion geschrieben, mit welcher ich einen Kreis vom Radius iRadius an dem Punkt PtPunkt zeichnen will (WinApi). Dies sieht nun so aus:

    void DrawKreis(HDC hdc, POINT PtPunkt, double iRadius)
    {
    	double iAlpha; 
    	int xPos, yPos;
    
    	for(iAlpha = 0.0; iAlpha < 360.0; iAlpha += 5.0){
    		xPos = cos(iAlpha / 360 * TWOPI) * iRadius;
    		yPos = sin(iAlpha / 360 * TWOPI) * iRadius;
    		SetPixel(hdc, PtPunkt.x + xPos, PtPunkt.y + yPos, RGB(255,0,0));
    		SetPixel(hdc, PtPunkt.x + xPos, PtPunkt.y + yPos, RGB(255,0,0));
    	}
    }
    

    Diese funktion zeichnet aber nur einen halben Kreis. Wo steckt der Fehler?

    Für Eure Antwort wäre ich sehr dankbar

    gruss 🙂



  • TWOPI falsch definiert?



  • Sicher, dass TWOPI auch wirklich 2*Pi und nicht einfach nur Pi ist?



  • Schlaumeier2 schrieb:

    Sicher, dass TWOPI auch wirklich 2*Pi und nicht einfach nur Pi ist?

    ja,
    #define TWOPI 2* 3,14

    wenn man in der zweiten SetPixel Zeile das hinschreibt:
    SetPixel(hdc, PtPunkt.x + (-1 * xPos), PtPunkt.y + (-1 * yPos), RGB(255,0,0));

    funzt es dann. Es müsste doch auch ohne gehen. Tut es aber nicht.



  • linu(x)bie schrieb:

    ja,
    #define TWOPI 2* 3,14

    LOL, schau dir mal an was der Kommaoperator macht.



  • oller poller schrieb:

    linu(x)bie schrieb:

    ja,
    #define TWOPI 2* 3,14

    LOL, schau dir mal an was der Kommaoperator macht.

    LOL, das ist der Fehler. Vielen Dank.

    Auch an alle anderen, die sich bemüht haben mir zu helfen.

    Gruss 🙂


Anmelden zum Antworten