Пользуюсь вот этой функцией: Аналог как у nuToH, только возвращает точку пересечения.

Код AS3:
public function IsLinesCross(x11:Number, y11:Number, x12:Number, y12:Number,
x21:Number, y21:Number, x22:Number, y22:Number):Point
{
// решаем систему методом Крамера
var d:Number = (x12 - x11) * (y21 - y22) - (x21 - x22) * (y12 - y11);
if (d == 0) return null; // Отрезки либо параллельны, либо полностью/частично совпадают
var d1:Number = (x21 - x11) * (y21 - y22) - (x21 - x22) * (y21 - y11);
var d2:Number = (x12 - x11) * (y21 - y11) - (x21 - x11) * (y12 - y11);
var t1:Number = d1 / d;
var t2:Number = d2 / d;
if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1)
{
var rX:Number = ((x11 * y12 - y11 * x12) * (x21 - x22) -
(x11 - x12) * (x21 * y22 - y21 * x22)) /
((x11 - x12) * (y21 - y22) - (y11 - y12) * (x21 - x22));
var rY:Number = ((x11 * y12 - y11 * x12) * (y21 - y22) -
(y11 - y12) * (x21 * y22 - y21 * x22)) /
((x11 - x12) * (y21 - y22) - (y11 - y12) * (x21 - x22));
return new Point(rX, rY);
}
else return null; // не пересекаются
}