openGL— 中点Bresenham画圆
来源:互联网 发布:轩辕传奇账号交易淘宝 编辑:程序博客网 时间:2024/06/05 18:27
// aa.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include <gl/glut.h> void Init(void) { glClearColor(0.0,0.0,0.0,0.0); //设置背景颜色为黑色 glMatrixMode(GL_PROJECTION); //对投影相关进行操作 gluOrtho2D(0.0, 30.0, 0.0, 30.0); } void CirclePoint(int x,int y) { glColor3f(1.0,0.0,0.0); //设置颜色为红色 glPointSize(4); //设置点的大小 glBegin(GL_POINTS); glVertex2f(15+x,15+y); // 修正点的坐标 glVertex2f(15+y,15+x); glVertex2f(15-y,15+x); glVertex2f(15-x,y+15); glVertex2f(15-x,15-y); glVertex2f(15-y,15-x); glVertex2f(15+y,15-x); glVertex2f(15+x,15-y); 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 display() { glClear(GL_COLOR_BUFFER_BIT); MidBresenhamCircle(8); //半径为8 } int main(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500,500); glutInitWindowPosition(400,100); glutCreateWindow("中点Bresenham画圆"); glutDisplayFunc(display); Init(); glutMainLoop(); return 0; }
运行结果:
第二种方法:
// aa.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include <gl/glut.h> void init(void) { glClearColor(0.0,0.0,0.0,0.0); //设置背景颜色为黑色 glMatrixMode(GL_PROJECTION); //对投影相关进行操作 gluOrtho2D(0.0, 30.0, 0.0, 30.0); } void putpixel(int x, int y) { glColor3f(1.0, 0.0, 0.0); //设置颜色为红色 glPointSize(2); //设置点的大小 glBegin(GL_POINTS); glVertex2f(15+x, 15+y); glEnd(); glFlush(); } void CirclePoint(int x,int y) { putpixel(x,y); putpixel(y,x); putpixel(-y,x); putpixel(-x,y); putpixel(-x,-y); putpixel(-y,-x); putpixel(y,-x); putpixel(x,-y); } 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 display() { glClear(GL_COLOR_BUFFER_BIT); MidBresenhamCircle(8); //半径为8 } int main(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400,400); glutInitWindowPosition(0,0); glutCreateWindow("中点Bresenham画圆"); glutDisplayFunc(display); init(); glutMainLoop(); return 0; }
运行结果:
0 0
- openGL— 中点Bresenham画圆
- openGL—中点Bresenham椭圆算法
- OPENGL—中点Bresenham画直线
- OpenGL应用——实现中点Bresenham算法
- 中点Bresenham画圆
- OpenGl中点Bresenham算法画直线
- 中点bresenham算法画线
- 中点Bresenham算法画圆
- OPENGL—改进Bresenham画直线
- 直线生成(DDA、中点、Bresenham)算法
- 中点Bresenham算法光栅化画圆(八分法)
- 画线算法 中点画线 Bresenham DDA
- CG Foundation - Bresenham (OpenGL)
- opengl Bresenham直线算法
- Bresenham 画圆
- 【OpenGL】用Bresenham算法画线
- 计算机图形学 -- 画线算法 [DDA] [中点画线] [Bresenham]
- 中点Bresenham算法光栅化画椭圆(四分法)
- Xcode开发c++程序时,openssl/aes.h: No such file or directory(或者是file not found)怎么解决
- uva 567 risk floyd
- A题
- spring集成mybatis后,打印SQL语句
- AngularJS入门之Angular内置指令
- openGL— 中点Bresenham画圆
- Xamarin.ios 下拉刷新效果
- Android--打开相机直接获取所拍摄的图片
- 虚函数 析构函数
- Keep learning, be curious!目标就在前方,努力就对了。
- 官方推荐react-navigation的使用
- 从json数组中提取所需值,组成新的json数组
- MySQL常用sql语句
- Java 集合的前世今生