计算最短距离
Calculating shortest distance
我有一个程序,用户可以在屏幕上放置两个框。它们可以放置在任何地方,我已经修复了一个函数来获取两个盒子的 x2、x1、y2 和 y1 的坐标。现在,当用户放置了两个框时,我想在 box1 的一侧中间到 box2 的一侧中间之间画一条线。我想考虑双方之间的最短距离。因此,绘制的线始终在两个框的两侧之间绘制,这将导致最短的线。
在这样的时刻,我希望我在学校里能更多地关注数学。有人能帮我吗?这是针对Web应用程序的,我正在使用javascript。
首先确定两个框(左、右、上或下边缘(的潜在锚点。您可以对此进行简单的检查,例如:
如果另一个框的中心 x 坐标小于当前框的较小 x 坐标,则左边缘是一个潜在的锚点。
如果另一个框的中心 y 坐标大于当前框的较大 y 坐标,则底部边缘是一个潜在的锚点。
等等...
在此之后,您将拥有两个框的候选列表。实际锚点可以计算为边的中心(( (edgeLeft + edgeRight) / 2, (edgeTop + edgeBottom) / 2)
(。现在,您需要检查哪种组合会导致最短的线条。迭代每个候选项:
for each candidate1 in candidates of box 1
for each candidate2 in candidates of box2
...
现在检查组合是否导致相交。 例如,如果candidate1
是左边缘,并且candidate2
具有更大的 x 坐标,则存在交集。跳过导致交集的组合。
从其他组合中,计算线的长度(实际上是平方长度:(candidate1.x-candidate2.x)^2 + (candidate1.y-candidate2.y)^2
(。记住最短的一条,你就得到了最佳的连接线。
由于每个框只有 4 个锚点,从而产生 16 种可能的组合,因此不妨跳过候选搜索并测试所有边的交集。
您还可以融合候选搜索和交叉点测试(生成候选组合搜索(。这使您可以选择可行的组合,在这些组合中可以更轻松地测试交叉点。
- 根据元素和容器大小计算边距
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 使用D3.js计算带有字母间距的文本长度
- 使用CSS或JavaScript计算分页符的数量
- 可以't计算自定义谷歌地图的js
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- JavaScript计算帮助(乘以时间)
- 如何计算对象文字中的键
- JavaScript循环无法正确计算/显示结果
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- 四舍五入JavaScript计算
- 计算HTML中的页数
- 使用jQuery计算数组中的对象以更改进度条
- 如何在jquery中使用实时计算求和值
- 计算多个项目的价格
- 计算CSS3缩放框在另一个框中的最高位置
- 如何计算二十面体的法线
- if(foo!==null)的计算结果为true,即使foo为null
- 在Angular中重新使用HTML端的计算文本
- 计算最短距离