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;
}
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
chq220
2014-10-20 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:109万
展开全部
以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坐标就好了。至于其他参数下的截图,你就自己修改下循环参数就可以了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式