#include <GL/glut.h> //GLUT头文件
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
//初始化
void init (void)
{
glClearColor (1.0, 1.0, 1.0, 0.0); //显示窗颜色设置为白色
glMatrixMode (GL_PROJECTION); // 设置投影参数
gluOrtho2D (0.0, 200.0, 0.0, 150.0); //定义二维正视投影矩阵
}
//绘制线段(OpenGL方法实现)
void models (void)
{
glClear (GL_COLOR_BUFFER_BIT); // 清除显示窗
glColor3f (1.0, 0.0, 0.0);// 设置颜色为红色(归一化的1.0相当于亮度值255)
glBegin (GL_LINES); // 线段定义开始
glVertex2i (180, 15); // 线段顶点1
glVertex2i (10, 145); // 线段顶点2
glEnd ( ); //线段定义结束
glFlush ( ); // 执行OpenGL命令.
}
//绘制多边形(OpenGL方法实现)
void models1 (void)
{
glClear (GL_COLOR_BUFFER_BIT); // 清除显示窗
glColor3f (1.0, 0.0, 0.0);// 设置颜色为红色(归一化的1.0相当于亮度值255)
glBegin(GL_POLYGON); //定义图元开始,GL_POLYGON声明图元为多边形
glVertex2f(10.0, 10.0); //第1个顶点,2f表示坐标为两个浮点数
glVertex2f(0.0,30.0); //第2个顶点
glVertex2f(30.0,30.0); //第3个顶点
glVertex2f(40.0, 15); //第3个顶点
glVertex2f(30.0, 0.0); //第3个顶点
glEnd (); //图元定义结束
glFlush ( ); // 执行OpenGL命令.
}
//绘制三角形(OpenGL方法实现)
void models2 (void)
{
glClear (GL_COLOR_BUFFER_BIT); // 清除显示窗
glColor3f (1.0, 0.0, 0.0);// 设置颜色为红色(归一化的1.0相当于亮度值255)
glBegin (GL_TRIANGLES); // 三角形定义开始
glVertex2i (20.0,20.0); // 顶点1
glVertex2i (100.0,100.0); // 顶点2
glVertex2i (100.0,20.0); // 顶点3
glEnd(); //三角形定义结束
glFlush ( ); // 执行OpenGL命令.
}
//绘制圆
void CirclePoint(int x,int y,int color)
{
putpixel(x+100,y+100,color);
putpixel(-x+100,y+100,color);
putpixel(x+100,-y+100,color);
putpixel(-x+100,-y+100,color);
putpixel(y+100,x+100,color);
putpixel(y+100,-x+100,color);
putpixel(-y+100,x+100,color);
putpixel(-y+100,-x+100,color);
}
void MidBresenhamCircle(int r,int color)
{
int x,y,d;
x=0;
y=r;
d=1-r;
while(x<=y){
CirclePoint(x,y,color);
if(d<0)
d+=2*x+3;
else
{
d+=2*(x-y)+5;
y--;
}
x++;
}
}
//绘制直线
void BresenhamLine(int x0,int y0,int x1,int y1,int color)
{
int x,y,dx,dy,e;
dx=x1-x0;
dy=y1-y0;
e=-dx;x=x0;y=y0;
while(x<=x1)
{
putpixel(x,y,color);
x++;
e=e+2*dy;
if(e>0)
{
y++;
e=e-2*dx;
}
}
}
void main (int argc, char** argv)
{
/* glutInit (&argc, argv); // 初始化GLUT. (OpenGL方法实现)
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // 设置显示模式
glutInitWindowPosition (50, 100); // 设置窗口左上角位置
glutInitWindowSize (400, 300); // 设置窗口大小
glutCreateWindow ("An Example OpenGL Program"); // 创建显示窗
init ( ); // 执行程序初始化
glutDisplayFunc (models1); //图形送到显示窗
// glutDisplayFunc (models2); //图形送到显示窗
glutMainLoop ( ); // 显示并等待
*/
// int z;
// printf("请输入圆的半径:");
//scanf("%d",&z);
int a,b,c,d;
printf("请输入第一个坐标:");
scanf("%d,%d",&a,&b);
printf("请输入第二个坐标:");
scanf("%d,%d",&c,&d);
int gdriver,gmode;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:\\tc20\\bgi");
// MidBresenhamCircle(z,RED);
BresenhamLine(a,b,c,d,RED);
getch();
closegraph();
}
APei
- 粉丝: 81
- 资源: 1万+
最新资源
- 九钻美化(PUPG).zip
- Vue.js 框架 - 采用 Material Design 的即用型 Vue 组件,永久免费 .zip
- Vue.js 服务器端渲染指南(适用于 Vue 2).zip
- Vue.js 文件上传组件,多文件上传,上传目录,拖拽上传,拖拽目录,同时上传多个文件,html4(IE 9),`PUT` 方法,自定义过滤器.zip
- java毕业设计SpringBoot+Vue前后端分离的在线考试系统源码+数据库+文档说明(高分项目)
- SpringBoot+Vue前后端分离的在线考试系统源码+数据库+文档说明(毕业设计项目)
- vue.js pdf 查看器.zip
- vue-concise-slider,一个简单的vue滑动组件.zip
- 欢迎使用 EnFocus Pitstop Pro 2023 使用说明书 - 参考指南!本资源文件旨在为您提供详细的指导和参考,帮助您更好地理解和使用 EnFocus Pitstop Pro 2023
- Vue+ElementPlus 构建的 CMS 开发框架.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0