bambooflow Note

法線ベクトル

最終更新:

bambooflow

- view
メンバー限定 登録/ログイン

法線ベクトル



大抵は、面に対して垂直なベクトル.
物体に光を当てたときに、どちらの方向に反射すればよいかを決めるためのもの。

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;
}
 

タグ:

OpenGL
記事メニュー
ウィキ募集バナー