Расстояние от точки до отрезка/прямой

Май 12, 2010

Расстояние от точки до отрезка/прямой

Для вычисления расстояния от точки до прямой, необходимо опустить перпендикуляр из точки на это прямую. Это будет точка Р на прямой.

Нахождение точки P можно задать параметрическим образом:

Параметрическое уравнение прямой

Так как отрезки P1P2 и P0P перпендикулярны, то скалярное произведение между соответстующими векторами равно нулю . Делая подстановку, находим значение параметра t:

находим значение параметра t

Замечания

  • Если t < 0 или t > 1, то перпендикуляр лежит за пределами отрезка P1P2

Пример реализации

float getDistBetweenPointAndStraight(const Vector4& oPos, const Vector4& oPt1, const Vector4& oPt2)
{
	Vector4 oV21 = oPt2 - oPt1;
	Vector4 oV01 = oPos - oPt1;
	float е = oV21 * oV01 / oV21.length2();
	Vector4 oP = oPt1 + oV21 * е;
	float fDist = (oPos - oP).length();
	return fDist;
}
			

Реализацию класса Vector4 смотрите тут.

Дополнительный материал по нахождению расстояния между точкой и прямой/лучом/отрезком смотрите тут.


Раз вы уже дочитали до сюда, то вам ничего не будет стоить кликнуть на рекламу

All content copyright (c) 2012 Vladislav Litunovskiy. All Rights Reserved.