我在两点 A(x,y)—B(x,y) 之间画了一条线 现在我有了第三个点 C(x,y)。我想知道 C 是否位于 A 和 B 之间的连线上。我想用 Java 语言来做。我找到了几个与此类似的答案。但是,都有一些问题,没有人是完美的。
原文由 Usman Mahmood 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在两点 A(x,y)—B(x,y) 之间画了一条线 现在我有了第三个点 C(x,y)。我想知道 C 是否位于 A 和 B 之间的连线上。我想用 Java 语言来做。我找到了几个与此类似的答案。但是,都有一些问题,没有人是完美的。
原文由 Usman Mahmood 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答749 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
要不就:
它的工作方式相当简单。如果 C 位于
AB
行,您将得到以下场景:并且,无论它位于该行的何处,
dist(AC) + dist(CB) == dist(AB)
。对于任何其他情况,你有一个三角形的一些描述和’dist(AC) + dist(CB) > dist(AB)‘:事实上,如果 C 位于外推线上,这甚至有效:
前提是距离保持无符号。距离
dist(AB)
可以计算为:请记住浮点运算的固有局限性(精度有限)。您可能需要选择“足够接近”的测试(例如,误差小于百万分之一)以确保等式的正确运行。