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

1. Breaseman算法绘制圆形程序

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

 void CCGProjectWorkView::bresenHam_1P4Circle(int radium, const float lineColor[])
{
int pointX, pointY, deltD, deltHD, deltDV, direction;
pointX = ;
pointY = radium;
deltD = *(-radium); glColor3f(lineColor[], lineColor[], lineColor[]);
glBegin(GL_POINTS);
while (pointY >= )
{
glVertex3f(pointX, pointY, );
if (deltD < )//D点在圆内
{
deltHD = *(deltD+pointY)-;
if (deltHD <= )
direction = ;// H 点距离最近
else
direction = ;// D 点距离最近
}
else if (deltD > )//D点在圆外
{
deltDV = *(deltD -pointX)-;
if(deltDV <= )// D点里的最贱
direction = ;
else
direction = ;//V点距离最近
}
else
direction = ;//D在圆上
switch(direction)
{
case :
//H点位置
pointX++;
deltD += *pointX+;
break;
case :
//D点位置
pointX++;
pointY--;
deltD += *(pointX-pointY+);
break;
case :
//V点位置
pointY--;
deltD += (-*pointY+);
break;
default :
break;
}
}
glEnd(); }

2. 中点算法绘制圆形

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

 //之画出正上方位于第一象限的左边的1/8园
void CCGProjectWorkView::midPoint_1P8Circle(int radium, const float lineColor[])
{
int pointX, pointY, r;
float distJugeFactor;
r = radium;
int deltX, deltY;//评判因子中x与y的个分量的递推分量
deltX = ;
deltY = - r - r;
distJugeFactor = - r; pointX = ;
pointY = radium;
glColor3f(lineColor[], lineColor[], lineColor[]);
glBegin(GL_POINTS);
glVertex3f(pointX, pointY, );
while (pointX < pointY)
{
if (distJugeFactor < )//中点位于圆内
{
distJugeFactor += deltX;
deltX += ;
pointX++;
}
else
{
distJugeFactor += deltX + deltY;
deltX += ;
deltY += ;
pointX++;
pointY--;
}
glVertex3f(pointX, pointY, );
}
glEnd(); }

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

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

    一:圆形图片的绘制 @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageV; @en ...

  2. 基于面绘制的MC算法以及基于体绘制的 Ray-casting 实现Dicom图像的三维重建(python实现)

    加入实验室后,经过张老师的介绍,有幸与某公司合共共同完成某个项目,在此项目中我主要负责的是三维 pdf 报告生成.Dicom图像上亮度.对比度调整以及 Dicom图像三维重建.今天主要介绍一下完成Di ...

  3. 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆

    为了能以任意点为圆心画圆,我们可以把圆心先设为视点(相当于于将其平移到坐标原点),然后通过中点法扫描转换后,再恢复原来的视点(相当于将圆心平移回原来的位置). 圆心位于原点的圆有四条对称轴x=0,y= ...

  4. CGA裁剪算法之线段裁剪算法

    CGA裁剪算法之线段裁剪算法 常用的线段裁剪算法有三种:[1]Cohen_SutherLand裁剪算法,[2]中点分割裁剪算法,[3]参数化方法. 1. Cohen_SutherLand裁剪算法 为了 ...

  5. JVM内存管理------GC算法精解(复制算法与标记/整理算法)

    本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...

  6. CGA填充算法之种子填充算法

    CGA填充算法之种子填充算法 平面区域填充算法是计算机图形学领域的一个很重要的算法,区域填充即给出一个区域的边界 (也可以是没有边界,只是给出指定颜色),要求将边界范围内的所有象素单元都修改成指定的颜 ...

  7. Bresenham直线算法与画圆算法

    在我们内部开发使用的一个工具中,我们需要几乎从 0 开始实现一个高效的二维图像渲染引擎.比较幸运的是,我们只需要画直线.圆以及矩形,其中比较复杂的是画直线和圆.画直线和圆已经有非常多的成熟的算法了,我 ...

  8. JVM内存管理之GC算法精解(复制算法与标记/整理算法)

    本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...

  9. 个性化排序算法实践(三)——deepFM算法

    FM通过对于每一位特征的隐变量内积来提取特征组合,最后的结果也不错,虽然理论上FM可以对高阶特征组合进行建模,但实际上因为计算复杂度原因,一般都只用到了二阶特征组合.对于高阶特征组合来说,我们很自然想 ...

随机推荐

  1. ubuntu 安装 selenium selenium操作 chrome

    重装虚拟机,好多包需要重装,sele这个记得当时就找了好久的完整重装方法,这次又找了好久,,,省的下次再这样,记录下来..... ubuntu16.04 4安装seleniumsudo pip ins ...

  2. sysdig

    centos 7 安装 https://sysdig.com/opensource/sysdig/install/ 1) Trust the Draios GPG key, configure the ...

  3. centos7 opencc 安装

    繁体字转换:http://xh.5156edu.com/jtof.php 转换的有问题http://tool.lu/zhconvert/ git网址:https://github.com/BYVoid ...

  4. org.Hs.eg.db包简介(转换NCBI、ensemble等数据库中基因ID,symbol等之间的转换)

    1)安装载入 ------------------------------------------- if("org.Hs.eg.db" %in% rownames(install ...

  5. ElementTree 解析xml(minidom解析xml大文件时,MemoryError)

    在使用minido解析xml文件时,因为文件过大,结果报错MemoryError.查询后得知是因为minidom在解析时是将所有文件放到内存里的,很占用内存,所以要考虑换一种方法来处理xml文件.   ...

  6. webpack 常用插件及作用

    copy-webpack-plugin :复制文件到目标文件夹.在开发时使用热模替换,(没有生成dist 文件夹,都在内存中),如果想引用某一个js文件,直接写script标签是找不到的,因为服务器内 ...

  7. PIE结对项目编程

    一.题目描述 构造程序并测试,分别是:     1.不能触发Fault.     2.触发Fault,但是不能触发Error.     3.触发Error,但是不能产生Failure. 二.结对对象 ...

  8. 反射, getClass(), 和something.class以及类型类(转)

    原文地址:http://www.cnblogs.com/lianghui66/archive/2012/12/03/2799134.html 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统 ...

  9. OC - GCD 队列组 - 下载图片画图

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self downloadIma ...

  10. RedisUtil工具类

    转载:http://blog.csdn.net/liuxiao723846/article/details/50401406 1.使用了jedis客户端,对redis进行了封装,包括: 1)使用了re ...