JavaScript
math

線分交差判定

More than 1 year has passed since last update.

線分abと、線分cdが交錯しているかどうかの判定。

var judgeIentersected = function(ax, ay, bx, by, cx, cy, dx, dy) {

var ta = (cx - dx) * (ay - cy) + (cy - dy) * (cx - ax);
var tb = (cx - dx) * (by - cy) + (cy - dy) * (cx - bx);
var tc = (ax - bx) * (cy - ay) + (ay - by) * (ax - cx);
var td = (ax - bx) * (dy - ay) + (ay - by) * (ax - dx);

return tc * td < 0 && ta * tb < 0;
// return tc * td <= 0 && ta * tb <= 0; // 端点を含む場合
};

trueが返る場合は2つの線分が交差している。

falseが返る場合は2つの線分が交差していない。

以下デモ。

http://codepen.io/ykob/details/vEzRPX/


以下のページの内容を参考にしました。というか式はそのまま。

http://www5d.biglobe.ne.jp/~tomoya03/shtml/algorithm/Intersection.htm