private bool InternalSegmentTest(Vec3 start, Vec3 end, ref Vec3 result, int num_dim) { Vec3 ray_dir = end - start; float length = num_dim > 2 ? ray_dir.Normalize() : ray_dir.Normalize2D(); float length_2 = length * length; if (InternalRayTest(start, ray_dir, ref result, num_dim)) { if ((num_dim > 2 ? result.DistanceSqr(start) : result.Distance2DSqr(start)) <= length_2) { return(true); } result = end; return(false); } return(false); }