Test if two lines intersect - JavaScript function

前端 未结 10 1566
谎友^
谎友^ 2020-12-02 09:08

I\'ve tried searching for a javascript function that will detect if two lines intersect each other.

The function will take the x,y values of both the start end point

10条回答
  •  无人及你
    2020-12-02 09:57

    Here's a version based on this gist with some more concise variable names, and some Coffee.

    JavaScript version

    var lineSegmentsIntersect = (x1, y1, x2, y2, x3, y3, x4, y4)=> {
        var a_dx = x2 - x1;
        var a_dy = y2 - y1;
        var b_dx = x4 - x3;
        var b_dy = y4 - y3;
        var s = (-a_dy * (x1 - x3) + a_dx * (y1 - y3)) / (-b_dx * a_dy + a_dx * b_dy);
        var t = (+b_dx * (y1 - y3) - b_dy * (x1 - x3)) / (-b_dx * a_dy + a_dx * b_dy);
        return (s >= 0 && s <= 1 && t >= 0 && t <= 1);
    }
    

    CoffeeScript version

    lineSegmentsIntersect = (x1, y1, x2, y2, x3, y3, x4, y4)->
        a_dx = x2 - x1
        a_dy = y2 - y1
        b_dx = x4 - x3
        b_dy = y4 - y3
        s = (-a_dy * (x1 - x3) + a_dx * (y1 - y3)) / (-b_dx * a_dy + a_dx * b_dy)
        t = (+b_dx * (y1 - y3) - b_dy * (x1 - x3)) / (-b_dx * a_dy + a_dx * b_dy)
        (0 <= s <= 1 and 0 <= t <= 1)
    

提交回复
热议问题