public static Ponto?Inter(Segmento seg, Reta r)
    {
        Ponto?p = Reta.Inter(r, seg.r);

        if (p == null)
        {
            return(null);
        }

        if (r.Contem(seg.p1))
        {
            return(seg.p1);
        }
        if (r.Contem(seg.p2))
        {
            return(seg.p2);
        }

        return(seg.Contem((Ponto)p) ? p : null);
    }