Hi!
Me again with a bug (at least I think so).
/// <summary>
/// Cross product of two 3-dimensional vectors.
/// </summary>
/// <returns>
/// Vector ret = (u[2]v[3] - u[3]v[2], u[3]v[1] - u[1]v[3], u[1]v[2] - u[2]v[1]).
/// </returns>
/// <seealso cref="CrossMultiply"/>
public static
Vector
CrossProduct(
IVector u,
IVector v
)
{
CheckMatchingVectorDimensions(u, v);
if(3 != u.Length)
{
throw new ArgumentOutOfRangeException("u", Resources.ArgumentVectorThreeDimensional);
}
//Wrong, because it is zerobased at not one-based.
//Vector product = new Vector(new double[ {
// u[2]*v[3] - u[3]*v[2],
// u[3]*v[1] - u[1]*v[3],
// u[1]*v[2] - u[2]*v[1]
// });
Vector product = new Vector(new double[ {
u[1]*v[2] - u[2]*v[1],
u[2]*v[0] - u[0]*v[2],
u[0]*v[1] - u[1]*v[0]
});
return product;
}
I hope it was helpfully.