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);
        }
    }
  • 相关阅读:
    Springboot中使用Interceptor(拦截器)
    八大排序之冒泡排序
    八大排序之快速排序
    mysql 用户的增删改与授权
    基于Java8开发接口时,处理Java8中的日期
    Springboot中Filter的使用
    正则校验日期,不考虑闰年和闰月
    正则校验时间,24小时制
    记一下mybatis中foreach循环遇到的一个小问题
    sqlserver中一条语句执行查询与更新
  • 原文地址:https://www.cnblogs.com/ji5jin45/p/5600735.html
Copyright © 2011-2022 走看看