作业帮 > 数学 > 作业

请问用c#做OPENGL光照模型时的法向量怎么做呢?麻烦帮我看一下程序对吗?为什么我做出来的图形怪怪的

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/05/16 03:38:14
请问用c#做OPENGL光照模型时的法向量怎么做呢?麻烦帮我看一下程序对吗?为什么我做出来的图形怪怪的
GL.glBegin(GL.GL_TRIANGLES);
GL.glNormal3f(5f, 2.5f, 2.5f);
GL.glVertex3f(1.0f, 1.0f, 0.0f);
GL.glVertex3f(0.0f, 0.0f, 5.0f);
GL.glVertex3f(2.0f, 0.0f, 0.0f);
GL.glEnd();
GL.glBegin(GL.GL_TRIANGLES);
GL.glNormal3f(2.5f, -7.5f, 2.0f);
GL.glVertex3f(2.0f, 0.0f, 0.0f);
GL.glVertex3f(0.0f, 0.0f, 5.0f);
GL.glVertex3f(1.0f, -1.0f, 0.0f);
GL.glEnd();
GL.glBegin(GL.GL_TRIANGLES);
GL.glNormal3f(2.5f, -2.5f, 0f);
GL.glVertex3f(1.0f, -1.0f, 0.0f);
GL.glVertex3f(0.0f, 0.0f, 5.0f);
GL.glVertex3f(-1.0f, -1.0f, 0.0f);
GL.glEnd();
GL.glBegin(GL.GL_TRIANGLES);
GL.glNormal3f(5.0f, 0f, 2.0f);
GL.glVertex3f(-1.0f, -1.0f, 0.0f);
GL.glVertex3f(0.0f, 0.0f, 5.0f);
GL.glVertex3f(-2.0f, 0.0f, 0.0f);
GL.glEnd();
GL.glBegin(GL.GL_TRIANGLES);
GL.glNormal3f(2.5f, 2.5f, 0f);
GL.glVertex3f(-2.0f, 0.0f, 0.0f);
GL.glVertex3f(0.0f, 0.0f, 5.0f);
GL.glVertex3f(-1.0f, 1.0f, 0.0f);
GL.glEnd();
GL.glBegin(GL.GL_TRIANGLES);
GL.glNormal3f(2.5f, 10f, 2.5f);
GL.glVertex3f(-1.0f, 1.0f, 0.0f);
GL.glVertex3f(0.0f, 0.0f, 5.0f);
GL.glVertex3f(1.0f, 1.0f, 0.0f);
GL.glEnd();
其中GL.glVertex3f(X, Y, Z);为七面椎体的顶点坐标
GL.glNormal3f(X, Y, Z);为七面椎体的顶点法向量
其计算公式为1/2*(相邻两个平面的法向量的叉乘)
请问我这是哪里错了呢?为什么做出来的七面椎体的光照模型不明显呢?加了法向量反而更怪了呢
不好意思 上面写错了
GL.glNormal3f(X, Y, Z);为七面椎体的顶点法向量
其计算公式为1/2*(相邻两个平面的法向量的和)
请问我这是哪里错了呢?为什么做出来的七面椎体的光照模型不明显呢?加了法向量反而更怪了呢
请问用c#做OPENGL光照模型时的法向量怎么做呢?麻烦帮我看一下程序对吗?为什么我做出来的图形怪怪的
一个顶点对应一个法线