public static (double X, double Y, double Z) Rejection1( double x1, double y1, double z1, double x2, double y2, double z2) { var magnitude = VectorMagnitude3D.Magnitude(x2, y2, z2); var dotProduct = DotProduct2Vector3DTests.DotProduct(x1, y1, z1, x2, y2, z2); return(x1 - (x2 * dotProduct / magnitude * magnitude), z1 - (y2 * dotProduct / magnitude * magnitude), z1 - (z2 * dotProduct / magnitude * magnitude)); }
public static (double X, double Y, double Z) Reflection1( double i1, double j1, double k1, double i2, double j2, double k2) { // if v2 has a right angle to vector, return -vector and stop if (Math.Abs(Math.Abs(Angle3DTests.Angle(i1, j1, k1, i2, j2, k2)) - (Math.PI / 2)) < double.Epsilon) { return(-i1, -j1, -k1); } (var x, var y, var z) = Projection3DTests.Projection(i1, j1, k1, i2, j2, k2); var magnitude = VectorMagnitude3D.Magnitude(i1, j1, k1); return( ((2 * x) - i1) * magnitude, ((2 * y) - j1) * magnitude, ((2 * z) - k1) * magnitude); }
public static bool IsUnitVector0(double i, double j, double k) { return(Math.Abs(VectorMagnitude3D.Magnitude(i, j, k) - 1) < Maths.Epsilon); }