Breaseman算法绘制圆形|中点算法绘制圆形_程序片段
2023-09-27 14:21:09 时间
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 }
相关文章
- 雪花算法解决的问题
- 十个常用深度学习算法
- 天猫程序猿高端算法找妹子
- 【背景提取】自适应背景提取算法和目标跟踪matlab仿真
- 基于GA优化BP神经网络的传感器故障诊断算法matlab仿真
- 【PSO路径规划】基于PSO优化算法的动态路径规划MATLAB仿真
- Lucas-Kanade optical flow method for 3-D源码程序——三维LK光流提取算法
- 第 19 课时:调度器的调度流程和算法介绍(木苏)
- 讲座:跨过算法和程序之间的那道沟(带视频链接)
- C++程序设计:原理与实践(进阶篇)16.5 数值算法
- [算法]最大连续子数组和,最长重复子串,最长无重复字符子串
- 《C语言点滴》一1.4 程序=数据结构+算法
- 基于 C++ 语言实现 A算法的求解八数码问题的程序【100010703】
- 什么是程序员?程序员的工作就是让电脑快速,自动化完成一些日常需要人为去做的一些重复有重复,反复又反复的工作。尤其是一些需要算法的,需要大量计算的,更需要程序的介入。
- 算法模板(一)(相关话题:二分搜索)
- 替换加密、解密算法
- 累了吗?来挑战一下算法趣题,看看自己是哪个段位的程序猿吧!
- 33数据结构与算法分析之---图的遍历
- 算法训练 Cowboys(DP)