Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中找到两条线段相交的点?_Javascript_Collision Detection - Fatal编程技术网

如何在JavaScript中找到两条线段相交的点?

如何在JavaScript中找到两条线段相交的点?,javascript,collision-detection,Javascript,Collision Detection,我的数学不是很好,所以虽然在其他问题中可以找到通用算法,但我很难弄清楚如何在JS中实现它们 对于JS,有一些问题的答案解释了如何检查线段是否发生碰撞,例如: 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

我的数学不是很好,所以虽然在其他问题中可以找到通用算法,但我很难弄清楚如何在JS中实现它们

对于JS,有一些问题的答案解释了如何检查线段是否发生碰撞,例如:

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);
}
var linesegmentsinterspect=(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*bdy);
var t=(+b_-dx*(y1-y3)-b_-dy*(x1-x3))/(-b_-dx*a_-dy+a_-dx*bdy);

返回(s>=0&&s=0&&t您可以通过
[x1+t*a\u dx,y1+t*a\u dy]
计算交点

修改给定函数的return语句会产生:
//如果存在或为false,则返回交点:
var LineSegmentsIntertest=(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*bdy);
var t=(+b_-dx*(y1-y3)-b_-dy*(x1-x3))/(-b_-dx*a_-dy+a_-dx*bdy);
返回(s>=0&&s=0&&t