java - 给定两个点 A(x1,y1) 和 B(x2,y2),我想找到第三个点 C(x3,y3) 与 AB 线之间的距离以及球面上 AD 的长度
问题描述
我有两点,我需要线 AB 和点 C 之间的距离。除此之外,我还需要 AD 的长度,其中 D 是 AB 上 C 的投影/交点。在二维中,我可以得到这里提到的投影点,但是::
double A=thirdX-startX;
double B=thirdY-startY;
double C=endX-startX;
double D=endY-startY;
double dot = A * C + B * D;
double len_sq = C * C + D * D;
double xProjection, yProjection,param;
param = dot / len_sq;
if (param < 0) {
xProjection = startX;
yProjection = startY;
}
else if (param > 1) {
xProjection = endX;
yProjection = endY;
}
else {
xProjection = startX + param * C;
yProjection = startY + param * D;
}
double deltaX= thirdX -xProjection;
double deltaY= thirdY-yProjection;
double AD= Math.sqrt(deltaX*deltaX+deltaY*deltaY);
double AD= Math.sqrt((startX-xProjection)*(startX-xProjection)+(startY-yProjection)*(startY-yProjection));
但是考虑到球体上的坐标而不是二维表面上的坐标,我想做同样的事情。提前致谢! 在此处输入图像描述
解决方案
对于球面/地球上的计算非常有用的链接:https: //www.movable-type.co.uk/scripts/latlong.html 交叉轨道距离和沿轨道距离分别给了我 CD 和 AD。
推荐阅读
- shell - 如何将多个 RSS 提要合并为一个?
- javascript - 通过 JavaScript reactjs 遍历复杂的嵌套 json 对象
- django - Django 后续 StringAgg 与分组
- java - 如何在 Hibernate 中使用限制
- qa - 字体颜色与ui规范不对应的错误严重程度如何?
- ckeditor - 如何更改链接颜色
- core-data - 如何跨视图传递 CoreData 对象
- firebase - 如何在编译时修改 Firebase sdk?
- forms - 如何在编辑/查看表单上将数据设置为 v-autocomplete
- teamcity - 工件依赖性仅适用于触发构建的构建