Нахождение расстояния от точки до отрезка в PHP/JS

Функция для нахождения минимального расстояния от точки до отрезка по координатам.

1

Аргументы функции:
$x, $y - координаты точки C.
$x1, $y1, $x2, $y2 - координаты двух точек, они описывают отрезок AB.

function distancePointToLine($x, $y, $x1, $y1, $x2, $y2)
{
	$A = $x - $x1;
	$B = $y - $y1;
	$C = $x2 - $x1;
	$D = $y2 - $y1;

	$dot = $A * $C + $B * $D;
	$len_sq = $C * $C + $D * $D;
	$param = -1;
	if ($len_sq != 0) {
	  	$param = $dot / $len_sq;
	}
	$xx = $yy = 0;

	if ($param < 0) {
		$xx = $x1;
		$yy = $y1;
	} else if ($param > 1) {
		$xx = $x2;
		$yy = $y2;
	} else {
		$xx = $x1 + $param * $C;
		$yy = $y1 + $param * $D;
	}
  
	$dx = $x - $xx;
	$dy = $y - $yy;
		
	return array('x' => $xx, 'y' => $yy, 'd' => sqrt($dx * $dx + $dy * $dy));
}
PHP

В результате получится массив:
x, y – координаты пересечения на отрезке AB.
d – расстояние от точки С до отрезка.

2
function distancePointToLine(x, y, x1, y1, x2, y2)
{
	A = x - x1;
	B = y - y1;
	C = x2 - x1;
	D = y2 - y1;

	dot = A * C + B * D;
	len_sq = C * C + D * D;
	param = -1;
	if (len_sq != 0) {
	  	param = dot / len_sq;
	}
	xx = yy = 0;

	if (param < 0) {
		xx = x1;
		yy = y1;
	} else if (param > 1) {
		xx = x2;
		yy = y2;
	} else {
		xx = x1 + param * C;
		yy = y1 + param * D;
	}
  
	dx = x - xx;
	dy = y - yy;

	return {x: xx, y: yy, d: Math.sqrt(dx * dx + dy * dy)};
}
JS
3
24.11.2022, обновлено 23.03.2023
1560

Комментарии

, чтобы добавить комментарий.

Другие публикации

Как нарисовать точку в PHP GD
Примеры, как нарисовать точку в библиотеке PHP GD.
2073
+1
Поворот изображения по двум точкам на PHP GD + jQuery UI Droppable
​Задача - необходимо повернуть изображение на угол, найденный путем выставления двух точек на линию горизонта...
2044
0
Перетаскивание элементов Drag and drop (jQuery UI Droppable)
UI Droppable – плагин, который позволяет сделать перетаскивание элементов мышью (Drag&Drop).
8612
0
Как найти новые координаты точки при повороте изображения PHP-функцией imagerotate()
К примеру есть исходное изображение map.jpg с наложенной через HTML подсказкой в точке с координатами...
2042
-1
Нахождение угла между тремя точками PHP/JS
Имеем три точки с координатами – A, B и C, точки образуют отрезки AB и AC, необходимо определить угол α между этими...
2211
-2
Загрузка файлов на сервер PHP
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
72261
+22