我们有两条线。我们如何才能得到这两条线与JavaScript相交的点?

我们有两条线。我们如何才能得到这两条线与JavaScript相交的点?,javascript,function,line,points,intersect,Javascript,Function,Line,Points,Intersect,第一行A(x1,y1)是起点,B(x2,y2)是终点 2st线A(x2,y2)为起点,B(x2,y2)为终点 我需要一个函数,它可以返回这两条线相交的点。这里有一个很好的说明: 这里有一种使用JavaScript的方法: var Point = function(valA, valB) { this.x = valA; this.y = valB; }; function lineIntersection(pointA, pointB, pointC, pointD) { var

第一行A(x1,y1)是起点,B(x2,y2)是终点
2st线A(x2,y2)为起点,B(x2,y2)为终点

我需要一个函数,它可以返回这两条线相交的点。

这里有一个很好的说明:

这里有一种使用JavaScript的方法:

var Point = function(valA, valB) {
  this.x = valA;
  this.y = valB;
};

function lineIntersection(pointA, pointB, pointC, pointD) {
  var z1 = (pointA.x - pointB.x);
  var z2 = (pointC.x - pointD.x);
  var z3 = (pointA.y - pointB.y);
  var z4 = (pointC.y - pointD.y);
  var dist = z1 * z4 - z3 * z2;
  if (dist == 0) {
    return null;
  }
  var tempA = (pointA.x * pointB.y - pointA.y * pointB.x);
  var tempB = (pointC.x * pointD.y - pointC.y * pointD.x);
  var xCoor = (tempA * z2 - z1 * tempB) / dist;
  var yCoor = (tempA * z4 - z3 * tempB) / dist;

  if (xCoor < Math.min(pointA.x, pointB.x) || xCoor > Math.max(pointA.x, pointB.x) ||
    xCoor < Math.min(pointC.x, pointD.x) || xCoor > Math.max(pointC.x, pointD.x)) {
    return null;
  }
  if (yCoor < Math.min(pointA.y, pointB.y) || yCoor > Math.max(pointA.y, pointB.y) ||
    yCoor < Math.min(pointC.y, pointD.y) || yCoor > Math.max(pointC.y, pointD.y)) {
    return null;
  }

  return new Point(xCoor, yCoor);
}

console.log(lineIntersection(new Point(40, 0), new Point(180, 140), new Point(60, 120), new Point(180, 40)));
var Point=函数(valA,valB){
这个.x=valA;
y=valB;
};
函数线交点(点A、点B、点C、点D){
var z1=(pointA.x-pointB.x);
var z2=(pointC.x-pointD.x);
var z3=(pointA.y-pointB.y);
var z4=(pointC.y-pointD.y);
var dist=z1*z4-z3*z2;
if(dist==0){
返回null;
}
var tempA=(pointA.x*pointB.y-pointA.y*pointB.x);
var tempB=(pointC.x*pointD.y-pointC.y*pointD.x);
变量xCoor=(tempA*z2-z1*tempB)/dist;
var yCoor=(tempA*z4-z3*tempB)/dist;
如果(xCoorMath.max(pointA.x,pointB.x)||
xCoorMath.max(pointC.x,pointD.x)){
返回null;
}
if(yCoorMath.max(pointA.y,pointB.y)||
yCoorMath.max(pointC.y,pointD.y)){
返回null;
}
返回新点(xCoor,yCoor);
}
日志(测线交点(新点(40,0)、新点(180140)、新点(60120)、新点(180,40));

两条线与Javascript相交。这是一道纯数学题,与JavaScript无关。请尝试询问,提供迄今为止尝试的任何工作或代码。在JSI中,你有两个问题:1)关于寻找两段相交点的算法。2) 如何在javascript中实现这一点。它们是两个独立的问题(应该在单独的问题中提出),第一个问题在stackoverflow中甚至不在主题上,所以这个问题实际上是离题的。一旦您了解了一个算法并尝试实现它,您可以在这里询问您是否有问题。