我正在尝试使用 LatLng 点在 java 中解决这个问题
我在这里看这篇文章Circle line-segment collision detection algorithm?
我有一种方法可以找到两点之间的距离。指令说
将 vector AC 投影到 AB 上。投影 vector AD 给出新点 D。 如果 D 和 C 之间的距离小于(或等于)R,则我们有一个交叉点。
我对 vector 一窍不通,谁能帮我找到D点?
提前致谢
最佳答案
如果你真的需要 D 点坐标 - 让我们用 vector
AB = (B.X-A.X, B.Y-A.Y)
AC = (C.X-A.X, C.Y-A.Y)
那么最简单的(我相信)C 到 AB 的投影形式是:
AD = AB * (AB.dot.AC)/(AB.dot.AB);
在坐标中:
CF=((B.X-A.X)*(C.X-A.X)+(B.Y-A.Y)*(C.Y-A.Y))/((B.X-A.X)^2+(B.Y-A.Y)^2)
D.X=A.X+(B.X-A.X)*CF
D.Y=A.Y+(B.Y-A.Y)*CF
Distance CD,正如大卫·华莱士 (David Wallace) 已经写过的那样,是
|CD| = |AC x AB|/|AB| (x = 叉积)
关于java - 用 vector 投影找点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23772990/