zoukankan      html  css  js  c++  java
  • Bresenham中点画圆法与二阶差分算法

    void Bresenham(int radius, int r,COLORREF color, CDC* pDC)
    {
        int x = 0;
        int y = radius;
        int m = d - radius;
        CirclePoints(x, -y, r, color, pDC);
        CirclePoints(y, -x, r, color, pDC);
        CirclePoints(x, y, r, color, pDC);
        CirclePoints(-y, -x, r, color, pDC);
        while (y > x) {
            if (m < 0) { /* Select E */
                m = 2 * x + 3 * d + m;
            }
            else { /* Select SE */
                m = 2 * (x-y) + 5 * d + m;
                y = y - d;
            }
            x = x + d;
            CirclePoints(x, -y, r, color, pDC);
            CirclePoints(y, -x, r, color, pDC);
            CirclePoints(x, y, r, color, pDC);
            CirclePoints(y, x, r, color, pDC);
            CirclePoints(-x, -y, r, color, pDC);
            CirclePoints(-y, -x, r, color, pDC);
            CirclePoints(-y, x, r, color, pDC);
            CirclePoints(-x, y, r, color, pDC);
        }
    }

    void dSE(int radius, int r, COLORREF color, CDC* pDC)
    {
        int x = 0;
        int y = radius;
        int m = d - radius;
        int dE = 3*d;
        int dSE = -2 * radius + 5*d;
        CirclePoints(x, -y, r, color, pDC);
        CirclePoints(y, -x, r, color, pDC);
        CirclePoints(x, y, r, color, pDC);
        CirclePoints(-y, -x, r, color, pDC);
        while (y > x) {
            if (m < 0) { /* Select E */
                m = dE + m;
                dE = dE + 2 * d;
                dSE = dSE + 2 * d;
            }
            else { /* Select SE */
                m = dSE + m;
                dE = dE + 2 * d;
                dSE = dSE + 4 * d;
                y = y - d;
            }
            x = x + d;
            CirclePoints(x, -y, r , color, pDC);
            CirclePoints(y, -x, r, color, pDC);
            CirclePoints(x, y, r, color, pDC);
            CirclePoints(y, x, r, color, pDC);
            CirclePoints(-x, -y, r, color, pDC);
            CirclePoints(-y, -x, r, color, pDC);
            CirclePoints(-y, x, r, color, pDC);
            CirclePoints(-x, y, r, color, pDC);
        }
    }
  • 相关阅读:
    清北学堂2019.7.18 & 清北学堂2019.7.19
    清北学堂2019.7.17
    清北学堂2019.7.16
    清北学堂2019.7.15
    清北学堂2019.7.14
    清北学堂2019.7.13
    【洛谷P1383 高级打字机】
    考试整理
    考试整理
    【洛谷P5018 对称二叉树】
  • 原文地址:https://www.cnblogs.com/ji5jin45/p/5600735.html
Copyright © 2011-2022 走看看