
openGL画圆 30
修改GLRect程序中的RenderScene函数,以GL_LINES方式绘制半径为50的圆边,要求分别提供步长为PI/5、PI/10、PI/20时的绘制结果截图,提供步...
修改GLRect程序中的RenderScene函数,以GL_LINES方式绘制半径为50的圆边,要求分别提供步长为PI/5、PI/10、PI/20时的绘制结果截图,提供步长为PI/5
时的RenderScene函数。
修改GLRect程序中的RenderScene函数,以GL_POINTS方式绘制半径为50的圆边,要求分别提供步长为PI/5、PI/10、PI/20时的绘制结果截图,提供步长为PI/5
时的RenderScene函数。
#include <gl/glut.h>
#pragma comment(lib, "glut32.lib")
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
glRectf(-25.0f, 25.0f, 25.0f, -25.0f);
glFlush();
}
void SetupRC(void)
{
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
void ChangeSize(int w, int h)
{
GLfloat aspectRatio;
if(h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
aspectRatio = (GLfloat)w / (GLfloat)h;
if (w <= h)
glOrtho (-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0);
else
glOrtho (-100.0 * aspectRatio, 100.0 * aspectRatio, -100.0, 100.0, 1.0, -1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutCreateWindow("GLRect");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
SetupRC();
glutMainLoop();
return 0;
} 展开
时的RenderScene函数。
修改GLRect程序中的RenderScene函数,以GL_POINTS方式绘制半径为50的圆边,要求分别提供步长为PI/5、PI/10、PI/20时的绘制结果截图,提供步长为PI/5
时的RenderScene函数。
#include <gl/glut.h>
#pragma comment(lib, "glut32.lib")
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
glRectf(-25.0f, 25.0f, 25.0f, -25.0f);
glFlush();
}
void SetupRC(void)
{
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
void ChangeSize(int w, int h)
{
GLfloat aspectRatio;
if(h == 0)
h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
aspectRatio = (GLfloat)w / (GLfloat)h;
if (w <= h)
glOrtho (-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0);
else
glOrtho (-100.0 * aspectRatio, 100.0 * aspectRatio, -100.0, 100.0, 1.0, -1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutCreateWindow("GLRect");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
SetupRC();
glutMainLoop();
return 0;
} 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
1个回答
展开全部
以GL_LINES方式绘制半径为50的圆边:
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
float x = 0.0f;
float y = 0.0f;
float R = 50.0f;
float pi = 3.1415927;
for(int i = 0; i<10;i++)
{
GL_LINES(R*cos(i*pi/5), R*sin(i*pi/5),R*cos((i+1)*pi/5), R*(sin(i+1)*pi/5));
}
glFlush();
}
GL_POINTS方式类似,就是把循环里面的绘制函数变成GL_POINTS并带入单个点的x和y坐标就好了。至于其他参数下的截图,你就自己修改下循环参数就可以了。
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
float x = 0.0f;
float y = 0.0f;
float R = 50.0f;
float pi = 3.1415927;
for(int i = 0; i<10;i++)
{
GL_LINES(R*cos(i*pi/5), R*sin(i*pi/5),R*cos((i+1)*pi/5), R*(sin(i+1)*pi/5));
}
glFlush();
}
GL_POINTS方式类似,就是把循环里面的绘制函数变成GL_POINTS并带入单个点的x和y坐标就好了。至于其他参数下的截图,你就自己修改下循环参数就可以了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |