Breaseman算法绘制圆形|中点算法绘制圆形_程序片段

Breaseman算法绘制圆形|中点算法绘制圆形_程序片段

1. Breaseman算法绘制圆形程序

  由于算法的特殊性,限制绘制第一象限部分,其他部分通过旋转绘制。

 1 void CCGProjectWorkView::bresenHam_1P4Circle(int radium, const float lineColor[])
 2 {
 3     int pointX, pointY, deltD, deltHD, deltDV, direction;
 4     pointX = 0;
 5     pointY = radium;
 6     deltD = 2*(1-radium);
 7
 8     glColor3f(lineColor[0], lineColor[1], lineColor[2]);
 9     glBegin(GL_POINTS);
10     while (pointY >= 0)
11     {
12         glVertex3f(pointX, pointY, 0);
13         if (deltD < 0)//D点在圆内
14         {
15             deltHD = 2*(deltD+pointY)-1;
16             if (deltHD <= 0)
17                 direction = 1;// H 点距离最近
18             else
19                 direction = 2;// D 点距离最近
20         }
21         else if (deltD > 0)//D点在圆外
22         {
23             deltDV = 2*(deltD -pointX)-1;
24             if(deltDV <= 0)// D点里的最贱
25                 direction = 2;
26             else
27                 direction = 3;//V点距离最近
28         }
29         else
30             direction = 2;//D在圆上
31         switch(direction)
32         {
33         case 1:
34             //H点位置
35             pointX++;
36             deltD += 2*pointX+1;
37             break;
38         case 2:
39             //D点位置
40             pointX++;
41             pointY--;
42             deltD += 2*(pointX-pointY+1);
43             break;
44         case 3:
45             //V点位置
46             pointY--;
47             deltD += (-2*pointY+1);
48             break;
49         default :
50             break;
51         }
52     }
53     glEnd();
54
55 }

2. 中点算法绘制圆形

  由于算法的特殊性,程序限制第一象限的1/8部分。

 1 //之画出正上方位于第一象限的左边的1/8园
 2 void CCGProjectWorkView::midPoint_1P8Circle(int radium, const float lineColor[])
 3 {
 4     int pointX, pointY, r;
 5     float distJugeFactor;
 6     r = radium;
 7     int deltX, deltY;//评判因子中x与y的个分量的递推分量
 8     deltX = 3;
 9     deltY = 2 - r - r;
10     distJugeFactor = 1 - r;
11
12     pointX = 0;
13     pointY = radium;
14     glColor3f(lineColor[0], lineColor[1], lineColor[2]);
15     glBegin(GL_POINTS);
16         glVertex3f(pointX, pointY, 0);
17         while (pointX < pointY)
18         {
19             if (distJugeFactor < 0)//中点位于圆内
20             {
21                 distJugeFactor += deltX;
22                 deltX += 2;
23                 pointX++;
24             }
25             else
26             {
27                 distJugeFactor += deltX + deltY;
28                 deltX += 2;
29                 deltY += 2;
30                 pointX++;
31                 pointY--;
32             }
33             glVertex3f(pointX, pointY, 0);
34         }
35     glEnd();
36
37 }
时间: 2024-08-27 12:25:25

Breaseman算法绘制圆形|中点算法绘制圆形_程序片段的相关文章

iOS开发Quzrtz2D 十:圆形图片的绘制以及加边框圆形图片的绘制

一:圆形图片的绘制 @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageV; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; /** * UIBezierPath:绘制路径,就是根据路径对图形上下文进行构造 */ //0.加载图片 UIImage *image = [UII

玩转Android Camera开发(五):基于Google自带算法实时检测人脸并绘制人脸框(网络首发,附完整demo)

本文主要介绍使用Google自带的FaceDetectionListener进行人脸检测,并将检测到的人脸用矩形框绘制出来.本文代码基于PlayCameraV1.0.0,在Camera的open和preview流程上进行了改动.原先是放在单独线程里,这次我又把它放到Surfaceview的生命周期里进行打开和开预览. 首先要反省下,去年就推出了静态图片的人脸检测demo,当时许诺一周内推出Camera预览实时检测并绘制的demo,结果拖到现在才整.哎,屌丝一天又一天,蹉跎啊.在demo制作过程中

粒子群算法(1)----粒子群算法简单介绍

一.粒子群算法的历史  粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,CAS中的成员称为主体.比方研究鸟群系统,每一个鸟在这个系统中就称为主体.主体有适应性,它能够与环境及其它的主体进行交流,而且依据交流的过程"学习"或"积累经验"改变自身结构与行为.整个系统的演变或进化包括:新层次的产生(小鸟的出生):分化和多样性的出现(鸟群中的鸟分成很多小的群):新的主题的出现(鸟寻找食物过程中,不断发现新

简单易学的机器学习算法——Mean Shift聚类算法

一.Mean Shift算法概述 Mean Shift算法,又称为均值漂移算法,Mean Shift的概念最早是由Fukunage在1975年提出的,在后来由Yizong Cheng对其进行扩充,主要提出了两点的改进: 定义了核函数: 增加了权重系数. 核函数的定义使得偏移值对偏移向量的贡献随之样本与被偏移点的距离的不同而不同.权重系数使得不同样本的权重不同.Mean Shift算法在聚类,图像平滑.分割以及视频跟踪等方面有广泛的应用. 二.Mean Shift算法的核心原理 2.1.核函数 在

计算机图形学(二)输出图元_3_画线算法_3_Bresenham画线算法

Bresenham画线算法 本来在word中是有右下数的,一编辑在csdn中编辑就没有了.                         Bresenham画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算.另外Bresenham算法还可用于显示圆和其他曲线.图3.8和图3.9给出了绘制线段的屏幕局部.垂直轴表示扫描线位置,水平轴标识像素列.在这个例子中,我们以单位x间隔取样,并且需要确定每次取样时两个可能的像素位置中的哪一个更接近于线路径.从图3.

6. 目标检测算法之Fast R-CNN算法详解(转)

6. 目标检测算法之Fast R-CNN算法详解(转) 原文链接:https://www.cnblogs.com/zyly/p/9246418.html 目录 一 Fast R-CNN思想 问题一:测试时速度慢 问题二:训练时速度慢 问题三:训练所需空间大 二 算法简述 三 算法详解 1.ROI池化层 2.训练 3.训练样本 4.损失函数 [8]目标检测(4)-Fast R-CNN Girshick, Ross. "Fast r-cnn." Proceedings of the IEE

CGA裁剪算法之Sutherland-Hodgman多边形裁剪算法

CGA裁剪算法之Sutherland-Hodgman多边形裁剪算法 Sutherland-Hodgman算法也叫逐边裁剪法,该算法是萨瑟兰德(I.E.Sutherland)和霍德曼(Hodgman)在1974年提出的. 这种算法采用了分割处理.逐边裁剪的方法.这一算法,适合任何凸多边形窗口对任何“凸或者凹,或者平面或者非平面”多边形的裁剪处理. 逐边逐次裁剪特点:逐边是分别用裁剪平面的边界来处理,且裁剪各个边界的处理顺序无关紧要.逐次是每次的裁剪边界对多边形的每条边处理是依次进行的,有顺序要求.

8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化

上两篇博客 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现 研究了递归方法实现回溯,解决N皇后问题,下面我们来探讨一下非递归方案 实验结果令人还是有些失望,原来非递归方案的性能并不比递归方案性能高 代码如下: package com.newflypig.eightqueen; import java.util.Date; /** * 使用循环控制来实现回溯,解决N皇后 * @author [email pr

操作系统: 最佳适配算法和邻近适配算法的模拟实现(内存分配算法)

实现动态分区的分配算法. (1) 最佳适配算法:选择内存空闲块中最适合进程大小的块分配. (2) 邻近适配算法:从上一次分配的地址开始查找符合要求的块,所查找到的第一个满足要求的空闲块就分配给进程. 模拟添加进程的时候,假定内存是一块完整的空闲区,对于算法(1)来说,分配的时候遍历所有的空闲内存块,找出其中最适合的一块,注意此时内存分区的总块数可能已经发生了变化: 对于算法(2)来说,则需要从上次分配的内存块(使用变量记录即可)接着向下找到第一个满足条件的块即可,内存分区的总块可能也已经发生了变