法線ベクトル
大抵は、面に対して垂直なベクトル.
物体に光を当てたときに、どちらの方向に反射すればよいかを決めるためのもの。
物体に光を当てたときに、どちらの方向に反射すればよいかを決めるためのもの。
int calcNormal( const float p1[3], const float p2[3], const float p3[3], float n[3])
{
float v1[3], v2[3], cross[3];
for (int i = 0; i < 3; i++) { v1[i] = p1[i] - p2[i]; }
for (int i = 0; i < 3; i++) { v2[i] = p3[i] - p2[i]; }
for (int i = 0; i < 3; i++) { cross[i] = v2[(i+1)%3] * v1[(i+2)%3] - v2[(i+2)%3] * v1[(i+1)%3]; }
float length = sqrt(cross[0] * cross[0] + cross[1] * cross[1] + cross[2] * cross[2]);
if (length == 0.0f) { return 0; }
for (int i = 0; i < 3; i++) { n[i] = cross[i] / length; }
return 1;
}