计算机图形学——扫描圆
来源:互联网 发布:sai mac破解版 编辑:程序博客网 时间:2024/05/21 16:22
要求:
利用中点Bresenham算法扫描转换圆心在原点, 半径为8的圆
#include <iostream>#include "stdio.h"#include <stdlib.h>#include <cmath>#include <gl/glut.h>using namespace std;void CirclePoint(int x,int y){ glColor3f(0.0f,1.0f,0.0f); glPointSize(2.0f); glBegin(GL_POINTS); glVertex2i(x+80,y+80);glVertex2i(y+80,x+80); glVertex2i(-y+80,x+80); glVertex2i(-x+80,y+80); glVertex2i(-x+80,-y+80); glVertex2i(-y+80,-x+80); glVertex2i(y+80,-x+80); glVertex2i(x+80,-y+80); glEnd(); glFlush();}void MidBresenhamCircle(int r){ int x,y,d; x=0;y=r;d=1-r; while(x<=y){ CirclePoint(x,y); if(d<0)d+=2*x+3; else{ d+=2*(x-y)+5; y--; } x++; }}void Init(void){ glClearColor(1.0f,1.0f,1.0f,0.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0);}void Display(void){ glClear(GL_COLOR_BUFFER_BIT); MidBresenhamCircle(8);}int main(int argc,char* argv[]){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400,300); glutInitWindowPosition(100,100); glutCreateWindow("Circle"); Init(); glutDisplayFunc(Display); glutMainLoop(); return 0;}
阅读全文
0 0
- 计算机图形学——扫描圆
- 计算机图形学——扫描椭圆
- 计算机图形学——直线的三种扫描转换算法
- 计算机图形学——资料
- 计算机图形学—几何变换
- 计算机图形学 - 扫描线种子填充算法
- 计算机图形学——GLSL编程
- 计算机图形学入门学习——阴影
- 计算机图形学——图像压缩
- 计算机图形学——表面细分
- 计算机图形学——OpenGL基本使用
- 经典书单 —— 计算机图形学
- 计算机图形学——绘制直线
- 计算机图形学01——坐标系
- 计算机图形学——OpenGL之光照
- 计算机图形学——OpenGL光照模型
- 计算机图形学01——坐标系
- 计算机图形学01——坐标系
- android OkHttp3.0
- JDK源码系列(1)----LinkedList 源码分析
- 创建ITable不能更新记录的问题
- 【ARM】Linux驱动移植
- 学生信息管理系统 之 “探索原因和办法”
- 计算机图形学——扫描圆
- ModelSim自动化仿真
- Ubuntu16.04+Titan X+CUDA8.0+cudnn5.1+Caffe
- 数组划分
- Spring源码解析--Spring配置文件解析BeanDefinitionParserDelegate(四)
- 如何在wicket框架下设置勾选框组checkGroup
- 详解JavaScript中数组的reduce方法
- 懒人系列——增删改查封装(一)
- android studio 导入新的工程后远程依赖修改没有效果?