public Vector3 InersectPlane(Vector3 planeNormal, Vector3 planeLocation)
{
float dot = (-(planeNormal.X*planeLocation.X) - (planeNormal.Y*planeLocation.Y) - (planeNormal.Z*planeLocation.Z));
float dot3 = (planeNormal.X*(Point2.X-Point1.X)) + (planeNormal.Y*(Point2.Y-Point1.Y)) + (planeNormal.Z*(Point2.Z-Point1.Z));
float dot2 = -((dot + (planeNormal.X*Point1.X) + (planeNormal.Y*Point1.Y) + (planeNormal.Z*Point1.Z)) / dot3);
return (Point1 + (dot2*(Point2-Point1)));
}