java - 找到离线最远的点

标签 java algorithm convex-hull

我有一个点数组,还有两个点(A 和 B)。最后两个点形成一条线,我试图找出数组中的哪些点离这条线最远。我如何在 Java 中执行此操作?

我想知道这是否与计算 A 和 B 之间的距离有关,但我并不这么认为。

附加信息: 我认为这是一条线段。鉴于这是 QuickHull,我不知道它是否有所作为。 在数学和公式方面,我从来都不是最棒的,所以解释越多越好。谢谢!

最佳答案

注意数组中每个p的每3个点[a,b,p]组成一个三角形,其面积表示为:(ab ) * h/2 [其中 h 是从 pab 的距离]

您可以 compute the area这些三角形创建并选择最小的。由于 ab 对所有人都是常数 - 它保证了具有最小面积的三角形也将具有最小的 h

你可以找到它[每个三角形的面积]使用

T=(1/2)* abs((x_a - x_p) * (y_b-y_a) - (x_a - x_b)* (y_p - y_a))

[其中x_a,x_b,x_py_a,y_b,y_pa,b的x,y坐标,p 分别].

  • 虽然我觉得这个方法很优雅,但我相信还有更好的方法 方法。

关于java - 找到离线最远的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418937/

相关文章:

java - iptables icmp 目标主机未知

java - 在 Java 中使用迭代器有什么好处

algorithm - 如何在 O(n) 时间内计算一组按 x 坐标排序的点的凸包?

java - 在java中合并凸包

java - 线程 "main"java.lang.NoClassDefFoundError : org/mockito/Mockito 中的异常

package - 我在哪里可以下载原始 java 包并添加到我的项目中?

python - 构建组织结构图

algorithm - 发送批量采访算法

performance - 为(字符串)哈希函数选择乘数

python - 获取创建 ConvexHull 的点的索引