当前位置: 首页 > wzjs >正文

精通网站开发书籍网站重复

精通网站开发书籍,网站重复,如何看到网站的制作公司,企业网站建设版本一 Bresenham 绘直线 使用 Bresenham 算法,可以在显示器上绘制一直线段。该算法主要思想如下: 1 给出直线段上两个端点 ,根据端点求出直线在X,Y方向上变化速率 ; 2 当 时,X 方向上变化速率快于 Y 方向上变化速率&am…

一 Bresenham 绘直线

    使用 Bresenham 算法,可以在显示器上绘制一直线段。该算法主要思想如下:

    1 给出直线段上两个端点 

,根据端点求出直线在X,Y方向上变化速率 

    2 当 

 时,X 方向上变化速率快于 Y 方向上变化速率,选择在 X 方向上迭代,在每次迭代中计算 Y 轴上变化;

       当 

 时,Y 方向上变化速率快于 X 方向上变化速率,选择在 Y 方向上迭代,在每次迭代中计算 X 轴上变化;

    3 现在仅考虑 

 情形,在 

 情况下仅需要交换变量即可。直线斜率 

,当 d = 0 时,为一条水平直线,当 d > 0 或 d < 0 时,需要分开讨论,如下图:

        

二 Bresenham 绘圆

    使用 Bresenham 绘制圆形,只需要绘制四分之一圆即可,其他部分通过翻转图形即可得到。假设圆心位于 (0, 0) 点,半径为  R,绘制第一象限四分之一圆形,如下图:

      

    根据图形可知,从 

 出发,下一个可能的选择分别为:

    1)水平方向上  

    2)对角方向上 

    3)垂直方向上 

    下面计算

,根据差值可判断大致圆弧位置:

    1)当 

 时,圆环落在 

 与 

 之间,进一步计算圆弧到 

 与 

 的距离以判断应该落在哪个点上;

    2)

         由于 

,上式可化简为,

         

,将 

 改写为 

 得:

         

        已知 

,可根据上式快速求解出 

,当 

时,下一点落在 

 上,当 

 时,下一点落在 

 上;

    3)当 

 时,圆环落在 

 与 

 之间,进一步计算圆弧到 

 和 

 的距离以判断应该落在哪个点上;

    4)

,可化简为:

         

,将 

 改写为 

 得:

        

       已知 

,可根据上式快速求解出 

,当 

 时,下一点落在 

 上,当 

 时,下一点落在 

 上;

    5)以上推导中,已知 

 可以快速求解 

,同时,已知 

 也可以快速推导出 

,以下分类讨论:

         a. 当 

时,有:

             

,进一步整理得:

            

        b. 当 

 时,有:

            

,进一步整理得:

           

       c. 当 

 时,有:

           

,进一步整理得:

           

    以下给出 Bresenham 绘圆实现:

      

复制代码

 1     void Bresenham_Circle(PairS center, int radius, std::vector<PairS>& circle)2     {3         PairS start(0, radius);4         int Delta = (start.x + 1) * (start.x + 1) +5             (start.y - 1) * (start.y - 1) - radius * radius;6 7         std::vector<PairS> tmp;8         tmp.push_back(start);9 
10         while (start.y > 0)
11         {
12             int state = -1;
13 
14             if (Delta < 0)
15             {
16                 int delta = (Delta + start.y) * 2 - 1;
17                 if (delta < 0)
18                 {
19                     start.x += 1;
20                     state = 0;
21                 }
22                 else
23                 {
24                     start.x += 1;
25                     start.y -= 1;
26                     state = 1;
27                 }
28             }
29             else
30             {
31                 int delta = (Delta - start.x) * 2 - 1;
32                 if (delta < 0)
33                 {
34                     start.x += 1;
35                     start.y -= 1;
36                     state = 1;
37                 }
38                 else
39                 {
40                     start.y -= 1;
41                     state = 2;
42                 }
43             }
44 
45             if (state == 0)
46                 Delta = Delta + start.x * 2 + 1;
47             else if (state == 1)
48                 Delta = Delta + start.x * 2 - start.y * 2, +2;
49             else if (state == 2)
50                 Delta = Delta - start.y * 2 + 1;
51             else
52                 break;
53 
54             tmp.push_back(start);
55         }
56 
57         std::vector<PairS> tmp2;
58         for (int i = 0; i < tmp.size(); ++i)
59         {
60             PairS p(tmp[i].x, tmp[i].y);
61             tmp2.push_back(p);
62         }
63         for (int i = tmp.size() - 1; i >= 0; --i)
64         {
65             PairS p(tmp[i].x, -tmp[i].y);
66             tmp2.push_back(p);
67         }
68         for (int i = 0; i < tmp2.size(); ++i)
69         {
70             PairS p(tmp2[i].x, tmp2[i].y);
71             circle.push_back(p);
72         }
73 
74         for (int i = tmp2.size() - 1; i >= 0; --i)
75         {
76             PairS p(-tmp2[i].x, tmp2[i].y);
77             circle.push_back(p);
78         }
79 
80         for (int i = 0; i < circle.size(); ++i)
81         {
82             circle[i].x += center.x;
83             circle[i].y += center.y;
84         }
85     }

复制代码

http://www.dtcms.com/wzjs/603982.html

相关文章:

  • 山东企业网站备案佛山市 骏域网站建设
  • 隆尧网站制作佛山网站建设哪里有
  • 中国建设银行网站登陆ps ui做响应式网站要求
  • 广州网站制作公司台安人才网
  • 中企动力近期做的网站免费域名注册免费空间
  • 根据域名查询网站名称双鸭山建设网站
  • 第四章第二节网站建设的教学设计闸北专业做网站
  • 企业网站建设可以分为网站建设费用怎么入账
  • 做网站公司哪家好网站 建设ppt
  • 手机微网站制作系统注入漏洞网站源码
  • 哪里学网站建设与管理泰安网络电视台直播
  • 什么网站广告最多郑州网络推广服务
  • js跳转网站怎么做网站服务公司名称
  • 企业为什么要做网站wordpress怎么做商城
  • 深圳做网站 信科网络wordpress离线发布功能
  • 电子商务网站设计原理知识点中企动力员工邮箱忘记密码
  • 哪个女装网站做的好西安网络技术有限公司网站
  • 潍坊网站建设哪里好wordpress大前端模板下载
  • 免费注册网站的平台大连服装网站建设
  • 支付商城网站制作出入成都最新规定今天
  • 西安网站建设制作公司做外贸哪里网站比较好
  • 重庆营销型网站开发公司大型集团网站建设公司
  • 深圳做服装设计网站的公司已收录的网站不好优化
  • 睢宁建设局网站九江集团网站建设
  • php网站如何绑定一级域名到子目录网站不绑定域名解析
  • 息壤网站打不开了常见的网站空间
  • 做虾网站该起啥名好微信网站开发多少钱
  • 永久免费搭建网站智能网站建设软件有哪些方面
  • 有什么网站可以接设计做工厂管理系统软件
  • 企业营销型网站费用厦门做网站优化公司