#java #geometry #distance #spherical-coordinate
#java #геометрией #расстояние #сферическими координатами
Вопрос:
У меня есть две точки, мне нужно расстояние между линией AB и точкой C. Наряду с этим мне также нужна длина AD, где D — точка проекции / пересечения C на AB. В 2-d я могу получить точку проекции, как указано здесь, но ::
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));
Но я хочу сделать то же самое, учитывая координаты на сфере, а не на двумерной поверхности.Заранее спасибо!
введите описание изображения здесь
Комментарии:
1.ПОИСК в ИНТЕРНЕТЕ:
3D distance from point to line
2. Вопрос отклонен, потому что он «не показывает никаких исследовательских усилий» (цитируя всплывающую подсказку кнопки «Против голосования»).
Ответ №1:
очень полезная ссылка для расчетов на сферической плоскости / земле: https://www.movable-type.co.uk/scripts/latlong.html Расстояние между дорожками и расстояние вдоль дорожки дают мне CD и AD соответственно.