package geom func SegLineIntersect(A, B, O, D Vec) (bool, float64) { r := Sub(B, A) den := Cross(r, D) if NearlyZero(den) { return false, 0 } t := Cross(Sub(O, A), D) / den return t > EPS && t < 1-EPS, t }