public Line3 Inersect(Line3 line)
{
Vector3 vector = (Point1 - line.Point1), vector2 = (line.Point2 - line.Point1), vector3 = (Point2 - Point1);
float dot1 = vector.Dot(vector2);
float dot2 = vector2.Dot(vector3);
float dot3 = vector.Dot(vector3);
float dot4 = vector2.Dot();
float dot5 = vector3.Dot();
float mul1 = (((dot1 * dot2) - (dot3 * dot4)) / ((dot5 * dot4) - (dot2 * dot2)));
float mul2 = (dot1 + (dot2 * mul1)) / dot4;
return new Line3((Point1 + (mul1 * vector3)), (line.Point1 + (mul2 * vector2)));
}