Javascript 创建一个函数,用于查找距离r单位两行的点

Javascript 创建一个函数,用于查找距离r单位两行的点,javascript,function,math,Javascript,Function,Math,我有两条线,分别由两个点定义(P1、P2、P3、P4) 我想从两条线中找出距离r单位的两点(X0,Y0) 我找到了一个方法,但我觉得它太长了(对我来说太难),也许还有一个更短的() 我的方式: 如果不解决它,就不可能创建函数 我想要解决方案,而不是系统 示例(我想找出黄点r): 谢谢 (为我糟糕的英语道歉)变体A: 把你的台词用英文表达出来 使用归一化系数(将方程除以Sqrt(a^2+b^2)) 对于该形状,点位于距离r处,如果 |a * x + b * y + c| = r |d * x

我有两条线,分别由两个点定义(P1、P2、P3、P4)

我想从两条线中找出距离r单位两点(X0,Y0)

我找到了一个方法,但我觉得它太长了(对我来说太难),也许还有一个更短的()

我的方式: 如果不解决它,就不可能创建函数

我想要解决方案,而不是系统

示例(我想找出黄点r):

谢谢

(为我糟糕的英语道歉)

变体A:
把你的台词用英文表达出来

使用归一化系数(将方程除以
Sqrt(a^2+b^2)

对于该形状,点位于距离r处,如果

 |a * x + b * y + c| = r
 |d * x + e * y + f| = r
打开带有所有可能+/-符号组合的绝对值括号,并获得4个可能点的4个线性系统


备选案文B:

1) 查找两行
da
db

2) 找到两条直线的交点
C

3) 按以下公式计算线之间的角度:

Fi = atan2(da.cross.db, da.dot.db)
4) 求单位平分线向量

b = (da + db).Normalized
5) 求垂直平分线

pb = (-b.y, b.x)
6) 获得所需的分数作为

C + b * r / Sin(Fi/2)
C - b * r / Sin(Fi/2)
C + pb * r / Cos(Fi/2)
C - pb * r / Cos(Fi/2)

你是想找出两条线之间最短的(垂直)距离吗?这是二维线还是三维线?我强烈认为这是二维空间,因为没有
Z轴
@Isaacabramowitz。你能给我一张图片让问题更清楚吗?用MSPaint在纸上画出你想得到的东西
C + b * r / Sin(Fi/2)
C - b * r / Sin(Fi/2)
C + pb * r / Cos(Fi/2)
C - pb * r / Cos(Fi/2)