一.任务描述
1.本关任务
2.预期输出
3.具体要求
二.相关知识
一.任务描述
根据提示,在右侧修改代码,并自己绘制出图形。平台会对你编写的代码进行测试。
1.本关任务
了解简单实体构建的过程;
熟悉视点观察函数的设置和使用;
熟悉3D图形变换的设置和使用;
进一步熟悉基本3D图元的绘制。
2.预期输出
3.具体要求
(1).背景色为黑色,用 glclearcolor 来完成;
(2).以中心为绘制原点,构建一个三棱锥;
(3).创建二维数组用来存取三棱锥顶点坐标,顶点坐标分别为{-1,0,1},{1,0,1},{0,0,-0.7},{0,1.7,0};
(4).创建二维数组用来存取三棱锥面的颜色,分别为{0,1,0},{1,0,0},{1,1,0},{0,0,1} ;
(5).创建二维数组用来存取三棱锥顶点的序号;
(6).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,沿Z轴负方向平移-3.0f,沿Y轴方向平移0.2f,然后将三棱锥绕X轴方向选择95度
二.相关知识
为了完成本关任务,你需要掌握:二维数组的运用、实体平移和旋转、简单实体构建的操作。
// 提示:在合适的地方修改或添加代码
#include <GL/freeglut.h>
#include<stdio.h>
#include<iostream>
// 评测代码所用头文件-开始
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
// 评测代码所用头文件-结束
// 请在此添加你的代码
/********** Begin ********/
GLfloat points1[4][3] = { };
GLfloat Colors1[4][3] = { };
int vertice1[4][3] = { };
/********** End **********/
void InitGL(GLvoid)
{
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_COLOR_MATERIAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
void Create() //创建三棱锥
{
glBegin(GL_TRIANGLES);
for (int i = 0; i < 4; i++)
{
glColor3fv(Colors1[i]);
for (int j = 0; j < 3; j++)
{
int VtxId = vertice1[i][j];
glVertex3fv(points1[VtxId]);
}
}
glEnd();
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
// 请在此添加你的代码
/********** Begin ********/
/********** End **********/
Create(); //三棱锥
glPopMatrix();
glutSwapBuffers();
}
void reshape(int width, int height)
{
if (height == 0)
height = 1;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, (GLfloat)width / (GLfloat)height, 0.1f, 100.0f);
glMatrixMod
最新发布