javascript - 创建一个函数,找到两行相距 r 个单位的点
问题描述
我有两条线,每条线由两个点(P1,P2,P3,P4)定义。
我想找到与两条线相距 r 个单位的2 个点(X0, Y0) 。
我找到了一种方法,但我认为解决的时间太长(对我来说太难了),也许还有一个更短的方法(https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line)。
我想要解决方案而不是系统。
谢谢。
(对不起我糟糕的英语)
解决方案
变体 A:以一般形式
表示您的线条
a * x + b * y + c = 0
d * x + e * y + f = 0
具有归一化系数(将方程除以Sqrt(a^2+b^2)
)
对于这种形式的点位于距离 r 如果
|a * x + b * y + c| = r
|d * x + e * y + f| = r
使用所有可能的 +/- 符号组合打开绝对值括号,并获得 4 个可能点的 4 个线性系统
变体 B:
1)找到两条线的单位方向向量da
和db
C
2)找到两条线的交点
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)
推荐阅读
- vue.js - 在 Vuejs/Laravel 中刷新 JWT 令牌后如何将数据重新发布到服务器
- android - 如何在android中实现可以展开为列表视图的卡片栈视图(类似于iOS群组通知)
- amazon-web-services - 查找我的日志文件发送到 aws 的位置
- ios - SwiftUI - 画布超出屏幕宽度 - 应用被拒绝
- r - R chisq.test 给出不同的 P 值
- javascript - 根据数字的值,将数组中的一个数组(带有字符串和数字)中的字符串推送到新数组
- python - 产生不同结果的时间和日期时间模块
- swift - iOS 13 MPRemoteCommandCenter 在后台模式后断开连接
- http - DirectApiAuthorizationRequired 与 Microsoft Flow 调用 Microsoft Flow
- jupyter-notebook - iPython / Jupyter 单元格何时可以使用小部件属性?