/// <summary> /// Calculates the dyad product. /// </summary> /// <param name="point1">The point1.</param> /// <param name="point2">The point2.</param> /// <returns>The result of dyad product operation.</returns> public static BaseDyadCoordinate <Complex, ComplexCalculator> DyadProduct(ref CartesianCoordinate point1, ref CartesianCoordinate point2) { if (point1.Equals(point2)) { return(new SymmetricDyadCoordinate <Complex, ComplexCalculator>( point1.X * point2.X, point1.X * point2.Y, point1.X * point2.Z, point1.Y * point2.Y, point1.Y * point2.Z, point1.Z * point2.Z)); } return(new DyadCoordinate <Complex, ComplexCalculator>( point1.X * point2.X, point1.X * point2.Y, point1.X * point2.Z, point1.Y * point2.X, point1.Y * point2.Y, point1.Y * point2.Z, point1.Z * point2.X, point1.Z * point2.Y, point1.Z * point2.Z)); }