Как узнать пересечение линий?
Верно мыслите. Находите точки пересечения прямых. А затем проверяете эти точки на принадлежность отрезку. Т.е. координаты точки должны принадлежать диапазону координат отрезка. min(A.x, B.x) <= x <= max(A.x, B.x). Для ординаты аналогично.
Вот тебе псевдокод для определения, пересекаются ли отрезки.Кодпрограмма пересечение двух отрезков <вх:ax,ay,bx,by,cx,cy,dx,dy:R>:Q
 дано    : | концы первого отрезка (ax, ay) и (bx, by)
           | концы второго отрезка (cx, cy) и (dx, dy)
 получить: | ответ = отрезки пересекаются да/нет
 ____________
  | A(ax, bx) B(bx, by) C(cx, cy) D(dx, dy)
  v1x := bx - ax | вектор AB
  v1y := by - ay
  v2x := cx - ax | вектор AC
  v2y := cy - ay
  v3x := dx - ax | вектор AD
  v3y := dy - ay
  v4x := dx - cx | вектор CD
  v4y := dy - cy
  v5x := bx - cx | вектор CB
  v5y := by - cy
  v6x := ax - cx | вектор CA
  v6y := ay - cy
  coord1 := v1x * v2y - v1y * v2x | [AB, AC]
  coord2 := v1x * v3y - v1y * v3x | [AB, AD]
  coord3 := v4x * v5y - v4y * v5x | [CD, CB]
  coord4 := v4x * v6y - v4y * v6x | [CD, CA]
  ответ := (coord1 * coord2 <= 0 и coord3 * coord4 <= 0)
конец программы