计算机图形学 -- 基本图形函数练习
2013-11-07 17:19
525 查看
1. 基本
2. 升级1
3. 升级2
#include<glut.h> #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") void mydisplay(void) { //glClearColor : 通过glClear使用红,绿,蓝以及AFA值来清除颜色缓冲区,并且缺省值全是0. 即(0,0,0,0) glClearColor(1.0,1.0,0.0,0.0); //设置背景为绿色 glClear(GL_COLOR_BUFFER_BIT); //在左上角画一个黄色的矩形 glColor3f(0.0f,1.0f,1.0f); glRectf(-0.9f,0.0f,0.0f,0.9f);//分别是左下角和右上角两点坐标 //在右上角画一个花花的三角形 glBegin(GL_TRIANGLES); glColor3f(1.0f,0.0f,0.0f); glVertex2f(0.9f,0.0f); glColor3f(0.0f,1.0f,0.0f); glVertex2f(0.5f,0.6f); glColor3f(0.0f,0.0f,1.0f); glVertex2f(0.1f,0.0f); glEnd(); //画两个点 glPointSize(5);//表示点的像素 glBegin(GL_POINTS); glColor3f(0.0f,0.0f,0.0f); glVertex2f(0.05f,0.0f); glColor3f(1.0f,0.0f,0.0f); glVertex2f(0.05f,-0.5f); glEnd(); glFlush(); } int main(int argc,char *argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE); glutInitWindowPosition(300,100); glutInitWindowSize(500,500); glutCreateWindow("Basic Shape"); glutDisplayFunc(&mydisplay); glutMainLoop(); return 0; }
2. 升级1
#include<glut.h> #include<math.h> #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") const GLfloat R = 0.8f; const GLfloat PI = 3.1415926536f; const int n = 600; void basicshape2(void) { int i; glClearColor(1.0,1.0,0.0,0.8); glClear(GL_COLOR_BUFFER_BIT); /* ---------------------- ----------------------*/ glLineWidth(3); glBegin(GL_POLYGON); //以闭合折线方式画圆 glColor3f(1.0f,0.0f,0.0f); for(i=0; i<n; ++i) glVertex2f(R*cos(2*PI/n*i), R*sin(2*PI/n*i)); glEnd(); /* ---------------------- ----------------------*/ glBegin(GL_LINE_LOOP); //以闭合折线方式画五角星 glColor3f(0.0f,1.0f,0.0f); GLfloat bx=R*cos(18*PI/180); GLfloat by=R*sin(18*PI/180); GLfloat cx=R*sin(36*PI/180); GLfloat cy=R*cos(36*PI/180); glVertex2f(-bx,by); glVertex2f(bx,by); glVertex2f(-cx,-cy); glVertex2f(0.0f,R); glVertex2f(cx,-cy); glEnd(); /* ---------------------- ----------------------*/ glBegin(GL_POLYGON); //以填充方式画菱形,多边形,五角星也是可以的啦~ glVertex2f(-0.8f,0.95f); glVertex2f(-0.7f,0.85f); glVertex2f(-0.8f,0.75f); glVertex2f(-0.9f,0.85f); glEnd(); glBegin(GL_POLYGON); //对称一下 glVertex2f(0.8f,0.95f); glVertex2f(0.7f,0.85f); glVertex2f(0.8f,0.75f); glVertex2f(0.9f,0.85f); glEnd(); //这里有两个菱形,可以用GL_QUADS一次搞定,独立的~ /* ---------------------- ----------------------*/ glColor3f(0.0f,0.0f,1.0f); glBegin(GL_TRIANGLES); //两个三角形 glVertex2f(-1.0f,-1.0f); glVertex2f(-0.95f,-0.7f); glVertex2f(-0.8f,-0.7f); glVertex2f(-1.0f,-1.0f); glVertex2f(-0.8f,-0.75f); glVertex2f(-0.8f,-0.95f); glEnd(); glFlush(); } int main(int argc,char *argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(150,150); glutInitWindowSize(500,500); glutCreateWindow("Baisc Shape2"); glutDisplayFunc(basicshape2); glutMainLoop(); return 0; }
3. 升级2
#include<GL/glut.h> #include<math.h> #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") const float R1 = 0.8f; const float R2 = 0.4f; const float PI = 3.1415926; void myDisplay_1() { glClearColor(1.0f,1.0f,1.0f,0.0f); glClear(GL_COLOR_BUFFER_BIT); //*****下面开始画矩形和三角形 glColor3f(1.0f,0.0f,0.0f); glBegin(GL_POLYGON); glVertex2f(0.4f,0); glVertex2f(0,0.4f); glVertex2f(-0.4f,0); glVertex2f(0,-0.4f); glEnd(); glBegin(GL_TRIANGLES); //四个三角形 glColor3f(1.0f,1.0f,0.0f); glVertex2f(0.4f,-0.4f); glVertex2f(0.8f,0); glVertex2f(0.4f,0.4f); glColor3f(0.0f,0.0f,1.0f); glVertex2f(0.4f,0.4f); glVertex2f(-0.4f,0.4f); glVertex2f(0,0.8f); glColor3f(1.0f,0.0f,1.0f); glVertex2f(-0.4f,0.4f); glVertex2f(-0.4f,-0.4f); glVertex2f(-0.8f,0); glColor3f(0.0f,1.0f,0.0f); glVertex2f(-0.4f,-0.4f); glVertex2f(0.4f,-0.4f); glVertex2f(0,-0.8f); glEnd(); //******描边 glColor3f(0.0f,0.0f,0.0f); glBegin(GL_LINE_LOOP); glVertex2f(0.4f,0);//矩形的边 glVertex2f(0,0.4f); glVertex2f(-0.4f,0); glVertex2f(0,-0.4f); glEnd(); glBegin(GL_LINE_LOOP);//三角形的边,可当作两个矩形 glVertex2f(0.8f,0); glVertex2f(0.4f,-0.4f); glVertex2f(0,-0.8f); glVertex2f(-0.4f,-0.4f); glVertex2f(-0.8f,0); glVertex2f(-0.4f,0.4f); glVertex2f(0,0.8f); glVertex2f(0.4f,0.4f); glVertex2f(0.4f,-0.4f); glVertex2f(-0.4f,-0.4f); glVertex2f(-0.4f,0.4f); glVertex2f(0.4f,0.4f); glEnd(); glFlush(); } void myDisplay_2() { glClearColor(1.0f,1.0f,1.0f,0.0f); glClear(GL_COLOR_BUFFER_BIT); for(int i=0;i<=270;i+=90){ glColor3f(1.0f,0.0f,0.0f); glBegin(GL_POLYGON); glVertex2f(R1*cos(i*PI/180),R1*sin(i*PI/180)); glVertex2f(R2*cos((i+25)*PI/180),R2*sin((i+25)*PI/180)); glVertex2f(0,0); glVertex2f(R2*cos((i-25)*PI/180),R2*sin((i-25)*PI/180)); glEnd(); glColor3f(0.0f,0.0f,0.0f); glBegin(GL_LINE_LOOP); glVertex2f(R1*cos(i*PI/180),R1*sin(i*PI/180)); glVertex2f(R2*cos((i+25)*PI/180),R2*sin((i+25)*PI/180)); glVertex2f(0,0); glVertex2f(R2*cos((i-25)*PI/180),R2*sin((i-25)*PI/180)); glEnd(); } for(i=45;i<=315;i+=90){ glColor3f(0.0f,1.0f,0.0f); glBegin(GL_POLYGON); glVertex2f(R1*cos(i*PI/180),R1*sin(i*PI/180)); glVertex2f(R2*cos((i+20)*PI/180),R2*sin((i+20)*PI/180)); glVertex2f(0,0); glVertex2f(R2*cos((i-20)*PI/180),R2*sin((i-20)*PI/180)); glEnd(); glColor3f(0.0f,0.0f,0.0f); glBegin(GL_LINE_LOOP); glVertex2f(R1*cos(i*PI/180),R1*sin(i*PI/180)); glVertex2f(R2*cos((i+20)*PI/180),R2*sin((i+20)*PI/180)); glVertex2f(0,0); glVertex2f(R2*cos((i-20)*PI/180),R2*sin((i-20)*PI/180)); glEnd(); } glFlush(); } int main(int argc,char * argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100,100); glutInitWindowSize(500,500); glutCreateWindow("sheng2_1"); glutDisplayFunc(myDisplay_1); glutInitWindowPosition(700,100); glutInitWindowSize(500,500); glutCreateWindow("sheng2_2"); glutDisplayFunc(myDisplay_2); glutMainLoop(); return 0; }
相关文章推荐
- 计算机图形学-基于OpenGL的绘制直线及图形变换练习
- 计算机图形学-实验1-掌握开发环境配置方法和基本图元绘制函数
- 计算机图形学之画基本图形(1)
- 计算机图形学 -- 基本图形 [之二] [glBegin参数Mode的应用] [圆,五角星,菱形等]
- 【计算机图形学】基本图形元素:圆的生成算法
- 计算机图形学-基本图素的生成算法和图形填充
- 计算机图形学第五章---基本图形生成算法
- 计算机图形学(2)基本图形的生成与显示——直线的生成
- 计算机图形学 -- 基本图形 [之一] [矩形,三角形等]
- 【计算机图形学】基本图形元素:直线的生成算法
- 【计算机图形学课程】一.MFC基本绘图函数使用方法
- 【计算机图形学课程】二.MFC鼠标响应函数模拟画图软件
- 计算机视觉与图像处理学习笔记(三)opencv的基本数据类型与简单图像处理函数
- Step 4:Processing基本函数绘制图形
- 计算机图形学入门教程OpenGL版.第1篇.基本概念
- 基本涵盖计算机图形学所有知识点的一个场景
- 计算机图形学中的基本概念总结
- [OpenGL]计算机图形学:明暗处理的基本算法
- iOS边练边学--(Quartz2D)基本图形的绘制#附加自定义进度控件的练习
- php 基本的图形处理函数