Kreise zeichnen



  • Hallo Leute!

    Hab mal ne FRage:
    Wie zeichne ich Kreise? Aus Dreiecken? Dann sind die aber nicht richtig rund...

    Gruß, Maxi



  • Bresenhams Kreisalgorithmus:

    // ******************************************************************
    // Zeichnet einen Kreis
    void tbDraw2D::DrawCircle(DWORD cx,
                              DWORD cy,
                              DWORD r,
                              D3DCOLOR c)
    {
        static DWORD    x;
        static DWORD    y;
        static int      p;
    
        // Diese Funktion zeichnet einen hohlen Kreis nach
        // Bresenhams Kreisalgorithmus.
    
        x = 0;
        y = r;
        p = 3 - (r << 2);
    
        while(x < y)
        {
            SetPixel(cx - x, cy - y, c);
            SetPixel(cx + x, cy - y, c);
            SetPixel(cx - x, cy + y, c);
            SetPixel(cx + x, cy + y, c);
            SetPixel(cx - y, cy - x, c);
            SetPixel(cx + y, cy - x, c);
            SetPixel(cx - y, cy + x, c);
            SetPixel(cx + y, cy + x, c);
    
            if(p < 0) p = p + (x << 2) + 6;
            else
            {
                p = p + ((x - y) << 2) + 10;
                y--;
            }
    
            x++;
        }
    
        if(x == y)
        {
            SetPixel(cx - x, cy - x, c);
            SetPixel(cx + x, cy - x, c);
            SetPixel(cx - x, cy + x, c);
            SetPixel(cx + x, cy + x, c);
        }
    }
    

    Unverständlich, aber sehr schnell!
    Es gibt auch einen Linienalgorithmus von Bresenham. Einfach googlen...



  • Was ist SetPixel?
    Ist das nich was vonner MFC oder so?
    Ich meine aber natürlich in DirectX 8?



  • SetPixel ist eine allgemeine Funktion, die Du Dir selbst definieren musst. Ich habe den Code nur aus meiner Engine kopiert. Die tbDraw2D-Klasse zeichnet auf Texturen oder auf andere D3D-Surfaces. Das ginge also auch mit dem Back-Buffer.
    Du kannst aber auch eine Textur nehmen, auf der Du einen Kreis vorzeichnest und dann ein Rechteck mit dieser Textur zeichnen (Ellipse oder Kreis).



  • @ David
    Du schreibst doch glaub ich ein Buch über Spieleprogrammierung oder? 😉
    Da wird auch die Engine entwickelt. Die heisst Tribase-Engine glaub ich.
    Das Buch erscheint glaub ich im April 2003.



  • Teilweise hab ich ja nichts gegen Werbung von den Authoren. Aber wenn es noch andere machen die es so extrem machen dann wirkt das nen bisschen *****kriechend. Ich will mir das Buch ja w*****einlich auch kaufen oder denke darüber nach aber sowas das ist eher abschreckend 😃 .

    Zweimal a r s c h einsetzen bei den ***** obwohl das 1. ja berechtigt ist aber ist ja nur scherzhaft gemeint.

    [ Dieser Beitrag wurde am 10.02.2003 um 22:03 Uhr von Tobiking editiert. ]



  • Nicht dass Du das falsch verstehst! Das sollte keine Werbung sein, ich wollte nur helfen. Ich hab diesen Bresenham-Algorithmus schon zig mal ins Forum gepostet, immer, wenn jemand nach "Kreise zeichnen" gefragt hat.



  • @TomasRiker
    Ich mein dich ja gar nicht ich mein lukuku. Das was du machst ist total in Ordnung und da hab ich nichts gegen.


Anmelden zum Antworten