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可以对高阶特征组合进行建模,但实际上因为计算复杂度原因,一般都只用到了二阶特征组合.对于高阶特征组合来说,我们很自然想 ...
随机推荐
- HP LaserJet MFP M227_M231双面打印
双面打印设置
- 多序列比对后可视化之texshade
一 :准备工作 1)中文的 LaTeX - CTEX 2)LaTeX 的*.tex 的编辑工具-Texmarker 3)TEXshade宏包 二:安装 1) 直接双击运行下载的CTEX,安装过程中,可 ...
- ccf认证模拟题之三---最大的矩形
问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3 ...
- Educational Codeforces Round 59
B. Digital root 题意: 题目定义了x的digital root是S(x).S(5)=5,S(38)=S(3+8=11)=S(1+1+2)=2. 有n个询问,每次询问给出ki和xi,要你 ...
- GridView中如何实现自定义时间货币等字符串格式?
方法一: <asp :GridView ID="GridView1" runat="server"> <columns> <asp ...
- cron,at的权限控制
/etc/cron.deny存在 /etc/cron.deny不存在 /etc/cron.allow存在 只有/etc/cron.allow中列出的用户才能运行crontab -e:忽略/etc/ ...
- 解压查看二进制rpm包的方法
详细参考: man cpio 具体方法: rpm2cpio qt5-qtbase-5.6.0-13.fc21.x86_64.rpm | cpio -dium 执行后可在当前目录查看 安装目录 etc ...
- DNS/BIND in Debian
Debian official document:http://www.debian.org/doc/manuals/network-administrator/ch-bind.html Buildi ...
- tomcat 时间相差8个小时,百度上查到的,备份下
通常网上一查都是 修改 tomcat 的参数 ,如catalina 文件,jvm parameters 等.如果都不起作用,可以使用如下方式.. 你可以修改jdk的时间校正了,你这么来.进入 \hom ...
- cocos2d-js 安卓自定义本地通知功能
安卓新手,笔记有理解不当的地方望指出,经过几天折腾终于可以实现类似ios的本地通知功能(ios就几行代码),可能有第三方sdk可以方便实现,暂时没去找 思路: 1. startService 和bin ...