cross3dcg
外積の計算
外積は、2つのベクトルを
x = y * z - z * y;
y = z * x - x * z;
z = x * y - y * x;
順で計算します。
C++
TVector cross(TVector &a, TVector &b)
{
TVector ret;
ret.v[0] = a.v[1] * b.v[2] - a.v[2] * b.v[1];
ret.v[1] = a.v[2] * b.v[0] - a.v[0] * b.v[2];
ret.v[2] = a.v[0] * b.v[1] - a.v[1] * b.v[0];
return ret;
};
Java
static Vertex cross(Vertex dest, Vertex v1, Vertex v2)
{
dest.x = v1.y * v2.z - v1.z * v2.y;
dest.y = v1.z * v2.x - v1.x * v2.z;
dest.z = v1.x * v2.y - v1.y * v2.x;
return dest;
}
外積は2つの辺に垂直な線を表すので、
面に垂直な法線を計算する時に利用できます。
2008年02月18日(月) 02:31:39 Modified by eruvasu