其他计算机图形学实验见 链接

#include<iostream>
#include<GL/glut.h>
using namespace std;float bx, by, ex, ey, r;//划线的起止点坐标,由此确定圆的圆心(bx, by)和半径int window_width = 1000, window_height = 800;void MidPointCircle(int x0, int y0, int r);
void display();
void drag_mouse(int x, int y);
void listen_mouse(int button, int state, int x, int y);int main(int argc, char* argv[])
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(100, 100);glutInitWindowSize(window_width, window_height);glutCreateWindow("中点画圆算法");glClearColor(1, 1, 1, 1);//设置绘制窗口颜色为白色\glMatrixMode(GL_PROJECTION);/*设置为投影类型模式和其他观察参数*/glLoadIdentity();/*设置为投影类型模式和其他观察参数*/gluOrtho2D(0, window_width, window_height, 0);/*设置为投影类型模式和其他观察参数,观察窗口的大小要与画布大小一致,所以直接设置全局变量即可*/glPointSize(3.0f);//设置点的大小glColor3f(10, -10, -10);//设置点的颜色glutDisplayFunc(&display);glutMouseFunc(listen_mouse);glutMotionFunc(drag_mouse);glutMainLoop();return 0;
}void MidPointCircle(int x0, int y0, int r)
{glClear(GL_COLOR_BUFFER_BIT);int x = 0;int y = r;double d = 1.25 - r;glBegin(GL_POINTS);glVertex2f(x0, y0);glVertex2f(x + x0, y + y0);glEnd();while (x <= y){if (d < 0)d += 2 * x + 3;else{d += 2 * (x - y) + 5;y--;}x++;glBegin(GL_POINTS);//利用八对称性画出整个圆glVertex2f(x + x0, y + y0);glVertex2f(y + x0, x + y0);glVertex2f(-x + x0, y + y0);glVertex2f(y + x0, -x + y0);glVertex2f(x + x0, -y + y0);glVertex2f(-y + x0, x + y0);glVertex2f(-x + x0, -y + y0);glVertex2f(-y + x0, -x + y0);glEnd();}glFlush();
}
void display()
{MidPointCircle(bx, by, r);
}//拖动鼠标
void drag_mouse(int x, int y)
{ex = x;ey = y;printf("待定坐标:起点(%d, %d) 终点(%d, %d)\n", bx, by, ex, ey);//把两个坐标打印出来r = sqrt((bx - ex) * (bx - ex) + (by - ey) * (by - ey));MidPointCircle(bx, by, r);glFlush();
}//监听鼠标位置,并且画点
void listen_mouse(int button, int state, int x, int y)
{//抬起鼠标的时候是最终的 终点if (button == GLUT_LEFT_BUTTON && state == GLUT_UP){ex = x;ey = y;printf("最终坐标:起点(%d, %d) 终点(%d, %d)\n", bx, by, ex, ey);//把两个坐标打印出来r = sqrt((bx - ex) * (bx - ex) + (by - ey) * (by - ey));printf("圆半径为:%d\n", r);MidPointCircle(bx, by, r);//画线glFlush();}//点击鼠标的时候 是起点if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){bx = x;by = y;}
}

计算机图形学E3——OpenGL 中点画圆相关推荐

  1. 计算机图形学——八分法中点画圆

    八分法中点画圆 实现方法:从0°到45°开始画,其余部分进行求对称 1 .绘制X^2+Y^2=R^2的圆,将圆划分为⑧等份.我们从第二份开始绘制 分析: 最大位移方向是Y方向,因此令y每增加1,x不变 ...

  2. 计算机图形学E1——OpenGL 方中有圆,圆中有方,无穷尽焉

    其他计算机图形学实验见 链接 使用OpenGL绘制如图所示图形 有穷的: #include <GL/glut.h> #include <math.h> #include< ...

  3. c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法

    在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...

  4. 中点画圆算法----计算机图形学

    圆的对称特性: 一个八分圆上的点可以映射为其余七个八分圆的点 利用圆的对称性可以减少计算量,只需要计算出一个八分之一圆上需要画的点,就可以映射出整个圆 中点画圆算法: (对于原点为(xc,yc)的圆, ...

  5. 【计算机图形学】小白谈计算机图形学(二)画圆篇之中点画圆法,Bresenham画圆算法,椭圆实操,线型处理详解

    小白谈计算机图形学(二)画圆篇之中点画圆法,Bresenham画圆算法,椭圆实操,线型处理详解 引言 如何画圆 基本思想 中点画圆法 中点画圆基本思路 中点画圆改进 Bresenham画圆算法 Bre ...

  6. 计算机图形学及OpenGL简介摘记

    计算机图形学(Computer Graphics)是研究怎样用计算机表示.生成.处理和显示图形的一门学科.图形的具体应用范围很广,但是按基本的处理技术划分只有两类.一类是线条,如工程图.地图.曲线图表 ...

  7. c语言计算机图形来画八分画圆,【计算机图形学】基本图形元素:圆的生成算法...

    08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...

  8. 平移计算机图形学代码注释,求代码注释:计算机图形学的OpenGL画四面体。高手来吧。争取每句都注释下。谢谢...

    求代码注释:计算机图形学的OpenGL画四面体.高手来吧.争取每句都注释下.谢谢 答案:3  信息版本:手机版 解决时间 2018-12-20 05:00 已解决 2018-12-20 01:58 求 ...

  9. 计算机图形学在现实中的应用,计算机图形学在实际中的应用

    计算机图形学在实际中的应用 计算机图形学在实际中的应用 1963年,伊凡•苏泽兰在麻省理工学院发表了名为<画板>的博士论文,它标志着计算机图形学的正式诞生.至今已有四十多年的历史.此前的计 ...

最新文章

  1. 教授在飞机上做微积分,被当作恐怖分子抓了......
  2. LINQ 101——分组、Set、转换、Element
  3. 怎么设置tomcat管理员的用户名和密码
  4. 有个名字叫随便乱记——css3
  5. java 当一个文本框有值时另一个文本框置灰_【农行DevOps进行时】基于PaaS的持续集成/持续交付实践 | IDCF...
  6. mysql主从复制周期_Mysql主从复制的实现
  7. 微信亲戚备注分组名称_微信新功能上线!群聊名称可备注,仅自己可见
  8. Linux性能优化实战:CPU的上下文切换是什么意思(03)
  9. python---pass和continue和break和exit()区别
  10. DNS 搭建(视图功能)
  11. 云计算 码率适配限速_5G 成熟后,带宽足够且云计算力够大,会不会对 PC 的升级需求放缓?...
  12. Tensorflow车牌识别完整项目(含完整源代码及训练集)
  13. 百度网盘 不限速下载文件
  14. Python---爬虫---爬取万余张图片,分门别类
  15. 用友U9数据库--用户对应的权限明细查询
  16. 用PS来制作背景透明的图片
  17. 车路协同、智慧交管、自动驾驶场景应有尽有,智能交通行业实战课火爆开启...
  18. 碰撞检测中的K_DOPS算法的研究
  19. 关于strrchr函数的用法
  20. APP使用monkey进行稳定性测试过程

热门文章

  1. 图像阈值中的函数简述
  2. LINUX下安装软件方法命令方法
  3. Android官方技术文档翻译——Gradle 插件用户指南(5)
  4. 关于修改docker(非docker-engine)的日志引擎
  5. 【iOS系列】-xib封装使用
  6. 9.20–9.24 三亚
  7. Variant类型转换成CString代码
  8. 动态规划——骨牌平铺问题
  9. Google安装Kopernio插件
  10. 几时几分几秒怎么写_泼尿 涂油漆 写威胁语 业主莫名被骚扰