openGL圆,正弦函数,正六边形绘制

//绘制正六边形,余弦和圆
#include<GL/glut.h>
#include<math.h>
const GLfloat pi = 3.1415926f;
int n = 1000;
const GLfloat factor = 0.1f;
void display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_POLYGON);
	glColor3f(1.0,0.0,0.0);
	for (int i = 0; i < n; i++)
	{
		glVertex2f(0.4f*cos(2 * (pi / n)*i) - 0.5f, 0.4f*sin(2 * (pi / n)*i)+0.5f);
	}
	glEnd();
	glFlush();
	glBegin(GL_LINE_LOOP);
	glColor3f(0.0f,0.0f,0.0f);
	for (int i = 1; i <= 6; i++)
	{
		glVertex2f(0.4f*cos(2 * (pi / 6)*i)+0.5f, 0.4f*sin(2 * (pi / 6)*i) + 0.5f);
	}
	glEnd();
	glFlush();
	glBegin(GL_LINE_STRIP);
	glColor3f(0.0f, 0.0f, 0.0f);
	for (double x = -1.0f / factor; x<1.0f / factor; x += 0.01f)
	{
		glVertex2f(x*factor, sin(x)*factor - 0.50);
	}
	glEnd();
	glFlush();
	glBegin(GL_LINES);
	glColor3f(0.0f, 0.0f, 1.0f);
		glVertex2f(-1.0f,0.0f);
		glVertex2f(1.0f, 0.0f);
		glVertex2f(0.0f,-1.0f);
		glVertex2f(0.0f,1.0f);
	glEnd();
	glFlush();
}
void init()
{
	glClearColor(0.0,1.0,1.0,0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(-1.0f,1.0f,-1.0f,1.0f);
}
int main(int argc,char*argv[])
{
	glutInit(&argc,argv);     //初始化
	glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);  //选择rgb,单缓冲
	glutInitWindowPosition(300,100);   //窗体位置
	glutInitWindowSize(600,600);        //窗体大小
	glutCreateWindow("六边形和圆和余弦函数");
	init();
	glutDisplayFunc(display);
	glutMainLoop();
	return 0;
}

效果:

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
//样本程序: 旋转的六边形 #include "stdafx.h" #include #include #define PI 3.14159 //设置周率 int n=6, R=10; //多边形变数,外接半径 float theta=0.0; //旋转初始角度值 void Keyboard(unsigned char key, int x, int y); void Display(void); void Reshape(int w, int h); void myidle(); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); char *argv[] = {"hello ", " "}; int argc = 2; // must/should match the number of strings in argv glutInit(&argc;, argv); //初始化GLUT库; glutInitWindowSize(700,700); //设置显示窗口大小 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //设置显示模式;(注意双缓冲) glutCreateWindow("A Rotating Square"); // 创建显示窗口 glutDisplayFunc(Display); //注册显示回调函数 glutReshapeFunc(Reshape); //注册窗口改变回调函数 glutIdleFunc(myidle); //注册闲置回调函数 glutMainLoop(); //进入事件处理循环 return 0; } void Display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0,0); //设置红色绘图颜色 glBegin(GL_POLYGON); //开始绘制六边形 for (int i=0;i=2*PI) theta-=2*PI; glutPostRedisplay(); //重画,相当于重新调用Display(),改编后的变量得以传给绘制函数 } void Reshape(GLsizei w,GLsizei h) { glMatrixMode(GL_PROJECTION); //投影矩阵模式 glLoadIdentity(); //矩阵堆栈清空 gluOrtho2D(-1.5*R*w/h,1.5*R*w/h,-1.5*R,1.5*R); //设置裁剪窗口大小 glViewport(0,0,w,h); //设置视区大小 glMatrixMode(GL_MODELVIEW); //模型矩阵模式 }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值