java - 用 vector 投影找点

标签 java algorithm math

pic

我正在尝试使用 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/

相关文章:

java - 将对象添加到 ArrayList 时遇到问题

java - 类文件编辑器未找到冗余源

algorithm - 以 n 个顶点为一组的图形划分

javascript - 检查 Angular 是否在 `from` 和 `to` 之间(顺时针方向)

java - Kolmogorov-Smirnov 2 样本测试 Java 给出 0 p 值

java - 获取单引号或空格之间的字符串

java - 使用 Flying Saucer +iText从具有多语言文本的HTML生成PDF,仅中文字体有效

algorithm - 是否有一种已知的算法可以通过匹配的仪表识别歌词和音乐?

algorithm - 确定同余系统是否有解

c++ - 不用 cmath 计算 sin