Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 计算四边形的顶点法线_Opengl_Graphics_Normals - Fatal编程技术网

Opengl 计算四边形的顶点法线

Opengl 计算四边形的顶点法线,opengl,graphics,normals,Opengl,Graphics,Normals,假设我有以下数组: float QuadVertices[4 * 2]; float QuadNormals[4 * 2]; 我这样填写: //Fill vertices for a 2d quad Renderer->FillVertices(QuadVertices,GL_QUADS,x,y,width,height); 现在一切都好了,我可以渲染四边形,纹理,拉伸等等 但现在我想计算四边形的法线: for (int i = 0; i < 8;i++) { QuadN

假设我有以下数组:

float QuadVertices[4 * 2];
float QuadNormals[4 * 2];
我这样填写:

//Fill vertices for a 2d quad
Renderer->FillVertices(QuadVertices,GL_QUADS,x,y,width,height);
现在一切都好了,我可以渲染四边形,纹理,拉伸等等

但现在我想计算四边形的法线:

for (int i = 0; i < 8;i++)
{
    QuadNormals[i] = ??
}
for(int i=0;i<8;i++)
{
四法线[i]=??
}
但我不知道我到底该如何计算一个简单的二维垂直阵列的法线,该阵列包含4个GL_四边形顶点或6个GL_三角形顶点….

如果你有这个-

   v1        v2
    +---------+
    |         | 
    |         |
    +---------+
    v3        v4
其中v1..v4是四边形的顶点,要计算v1处的法线,应沿其所在的两条边计算向量,然后计算这些顶点的叉积

所以,v1的正常值是

CrossProduct((v2-v1), (v3-v1))
可以对每个顶点重复此操作,但如果四边形为“平面”,则它们都将相同


如果有其他四边形连接到此四边形,则可能需要计算每个四边形的法线,然后将所有连接四边形的平均值指定为该顶点的法线

Bah,只是
glEnable(GL_NORMALIZE)
:)谢谢!老实说,我期待着一件非常艰难的事情