1、绘制一个三维几何图形,如:球、立方体、棱柱、棱锥等。
2、对绘制的三维几何图形实现平移、旋转、变比的基本变换。
3、编程实现凸多面体的隐藏面和隐藏线的消隐。
2、对绘制的三维几何图形实现平移、旋转、变比的基本变换。
3、编程实现凸多面体的隐藏面和隐藏线的消隐。
解决方案 »
- 求助,工具条的停靠设置?
- cximage类怎么实现内存中BMP转为JPEG
- VC取得远程网页的值,网页已显示如"2010年6月23日" 取得后怎么汉字成了乱码?
- 新年第一贴(哈哈)
- 用SPY++查不到QQ2006密码框的窗口ID,得到的是00000000
- 关于UDP协议的缺点.跪求高手解救~~~~~~~~~~~~
- 在CScrollView中如何实现光标闪烁?
- 请问怎样设置MIANFRAME的标题???
- MFC 视图 浮动窗口
- 请教各位一个多线程中数据共享的问题,立即加分,先谢了
- 急急急急急急急急急寻Delphi/VC++兼职高手,开发音频\视频多媒体模块,有意尽快和我联系!
- 到哪里找ico图片?
#include <stdlib.h>void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glLoadIdentity (); /* clear the matrix */
/* viewing transformation */
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glScalef (1.0, 2.0, 1.0); /* modeling transformation */
glutWireCube (1.0);
glFlush ();
}void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode (GL_MODELVIEW);
}void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:
exit(0);
break;
}
}int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
这是绘制立方体的
#include <stdlib.h>static GLfloat spin = 0.0;void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(spin, 0.0, 0.0, 1.0);
glColor3f(1.0, 1.0, 1.0);
glRectf(-25.0, -25.0, 25.0, 25.0);
glPopMatrix(); glutSwapBuffers();
}void spinDisplay(void)
{
spin = spin + 2.0;
if (spin > 360.0)
spin = spin - 360.0;
glutPostRedisplay();
}void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}void reshape(int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(spinDisplay);
break;
case GLUT_MIDDLE_BUTTON:
case GLUT_RIGHT_BUTTON:
if (state == GLUT_DOWN)
glutIdleFunc(NULL);
break;
default:
break;
}
}
/*
* Request double buffer display mode.
* Register mouse input callback functions
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
return 0; /* ANSI C requires main to return int. */
}
这是旋转的正方形
这些都是很简单的例子,,给你参考
更像是一个学图形学理论的试验题目1,2,3是同一个问题的三个不同的方面第一个问题,解决了三维空间物体的平面绘制就可以了,这个是绘制流程的最底层的东西
第二个问题是控制矩阵的问题,控制矩阵在显示流程当中如何体现是体系结构的问题
第三个问题,为三角形定义出法向量,朝向相机的才绘制,否则的不绘制如果你是在学计算机图形学这门课的话, 就真应该好好看书去了, 书上都有的最基本的东西