Breaseman算法绘制圆形|中点算法绘制圆形_程序片段
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算法绘制圆形|中点算法绘制圆形_程序片段的更多相关文章
- iOS开发Quzrtz2D 十:圆形图片的绘制以及加边框圆形图片的绘制
一:圆形图片的绘制 @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageV; @en ...
- 基于面绘制的MC算法以及基于体绘制的 Ray-casting 实现Dicom图像的三维重建(python实现)
加入实验室后,经过张老师的介绍,有幸与某公司合共共同完成某个项目,在此项目中我主要负责的是三维 pdf 报告生成.Dicom图像上亮度.对比度调整以及 Dicom图像三维重建.今天主要介绍一下完成Di ...
- 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆
为了能以任意点为圆心画圆,我们可以把圆心先设为视点(相当于于将其平移到坐标原点),然后通过中点法扫描转换后,再恢复原来的视点(相当于将圆心平移回原来的位置). 圆心位于原点的圆有四条对称轴x=0,y= ...
- CGA裁剪算法之线段裁剪算法
CGA裁剪算法之线段裁剪算法 常用的线段裁剪算法有三种:[1]Cohen_SutherLand裁剪算法,[2]中点分割裁剪算法,[3]参数化方法. 1. Cohen_SutherLand裁剪算法 为了 ...
- JVM内存管理------GC算法精解(复制算法与标记/整理算法)
本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...
- CGA填充算法之种子填充算法
CGA填充算法之种子填充算法 平面区域填充算法是计算机图形学领域的一个很重要的算法,区域填充即给出一个区域的边界 (也可以是没有边界,只是给出指定颜色),要求将边界范围内的所有象素单元都修改成指定的颜 ...
- Bresenham直线算法与画圆算法
在我们内部开发使用的一个工具中,我们需要几乎从 0 开始实现一个高效的二维图像渲染引擎.比较幸运的是,我们只需要画直线.圆以及矩形,其中比较复杂的是画直线和圆.画直线和圆已经有非常多的成熟的算法了,我 ...
- JVM内存管理之GC算法精解(复制算法与标记/整理算法)
本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...
- 个性化排序算法实践(三)——deepFM算法
FM通过对于每一位特征的隐变量内积来提取特征组合,最后的结果也不错,虽然理论上FM可以对高阶特征组合进行建模,但实际上因为计算复杂度原因,一般都只用到了二阶特征组合.对于高阶特征组合来说,我们很自然想 ...
随机推荐
- layoutSubviews相关总结
ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit ------- - (void)layoutSubview ...
- PHP与apache配置
在apache 的安装路径中找到 \conf\httpd.conf文件 在 LoadModule最后面添加如下代码: PHPIniDir "D:\PHP"LoadModule ph ...
- spark 创建稀疏向量和矩阵
http://blog.csdn.net/canglingye/article/details/41316193 [相互转换]:http://stackoverflow.com/questions/3 ...
- dubbo hessian+dubbo协议
Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况 Hessian协议用于集成Hessian的服务,Hessian底层采 ...
- SpringCloud——Eureka服务注册和发现
一.SpringCloud和Dubbo SpringCloud整合了一套较为完整的微服务解决方案框架,而Dubbo只是解决了微服务的几个方面的问题. content Dubbo SpringCloud ...
- ios 点击Home问题
应用可以在后台运行或者挂起,该场景的状态跃迁过程见图2-22,共经历3个阶段4个状态:Active → Inactive → Background→Suspended. q 在Active→Ina ...
- eclipse奇怪问题之端口占用记录
启动程序报端口占用(实际并没有启动占用端口的程序) 打开cmd查找占用端口的进程能查到,但又无法杀掉(命令和任务管理器都杀不掉),用了PCHunter(xuetr)结束进程后还会刷新还会重新出现 重启 ...
- TextView UI美化-------自适应字体控件
http://www.cnblogs.com/psuwgipgf/p/4874158.html 一. TextView字体随大小变化自适应TextView 实现依靠于第三方类库 第三方类来源: htt ...
- Struts2的拦截器技术
1. 拦截器的概述 * 拦截器就是AOP(Aspect-Oriented Programming,面向切面)的一种实现.(AOP是指用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作 ...
- Django开发问题及解决方法汇总
1. manage.py@MxOnline > makemigrations users manage.py@MxOnline > migrate users 2. 操作django的ad ...