public static Point interseccionDeSegmentos(int u1, int v1, int u2, int v2, int x1, int y1, int x2, int y2)
    {
        Point p = new Point() ;
      int res;
      int a1,a2,b1,b2,c1,c2,dd;
      double xx,yy;
      res = -1; // cuando uno de los segmentos es un punto
      // res := 0 cuando son paralelas pero no colineales (no se intersectan)
      // res := 1 CUANDO SE INTERSECTAN EN UN PUNTO   
      // res := 2 cuando se intersectan en mas de un punto (sii colineales)
      // res := 3 cuando cuando son paralelas y colineales (no se intersectan)
      // res := 4 cuando cuando NOOOOO  son paralelas PERO NOOOOOOOOOOOOO SE INTERSECTAN
      
      if((! esSegmentoPunto(u1,v1,u2,v2))&&(! esSegmentoPunto(x1,y1,x2,y2)))
      {
        //ecuacion general de la recta...................................
        //    ax + by = c
        //...............................................................

        // coeficientes de la recta111111111111
        a1 = v1-v2;
        b1 = u2-u1;
        c1 = (u1*a1)+(v1*b1);

        // coeficientes de la recta22222222222
        a2 = y1-y2;
        b2 = x2-x1;
        c2 = (x1*a2)+(y1*b2);

        // discriminante...........................
        dd = (a1*b2)-(b1*a2);

        //analizamos paralelismo.........................
        if(dd==0) // si son paralelas.................
        {
            if(sonIguales(((b1*c2)+0.0),((c1*b2)+0.0))) // si las rectas son colineales.........
            {
                p = getInterseccionSegmentColineales(u1,v1,u2,v2,x1,y1,x2,y2);
            }
            else
                res =0; // son paralelas pero no colineales  (no se intersectan)
        } 
        else 
        {  // si no son paralelas (sii se intersectan)
          // encontramos el punto de interseccion (xx,yy)
          xx = (((c1+0.0)*(b2+0.0))-((b1+0.0)*(c2+0.0)))/(dd + 0.0);
          yy = (((a1+0.0)*(c2+0.0))-((c1+0.0)*(a2+0.0)))/(dd + 0.0);
          p = new Point((int)xx,(int)yy);
          // el punto tiene que estar dentro de los dominios en 'X' y en 'Y'
          // en los dos segmentos
          if((enDom(xx,(u1+0.0),(u2+0.0)))&&(enDom(xx,(x1+0.0),(x2+0.0)))&&(enDom(yy,(v1+0.0),(v2+0.0)))&&(enDom(yy,(y1+0.0),(y2+0.0))))  // si esta en el dominio
            res = 1;
          else
            res = 4;
        }

      }
        return p;
    }