304
правки
Изменения
→Реализация
===Реализация===
[[Файл:DistancePointToSegment.gif|300px|right]]
Пусть даны точка <tex>(x_0; , y_0)</tex> и отрезок, заданный точками <tex>(x_1; , y_1)</tex> и <tex>(x_2; y_2)</tex>.
Введём обозначения:
*<tex>R_1</tex> расстояние от <tex>(x_0; , y_0)</tex> до <tex>(x_1; , y_1)</tex>*<tex>R_2</tex> расстояние от <tex>(x_0; , y_0)</tex> до <tex>(x_2; , y_2)</tex>*<tex>R_{12}</tex> расстояние от <tex>(x_1; , y_1)</tex> до <tex>(x_2; , y_2)</tex>.
Если:
*<tex>R_1 \ge \sqrt{R_2^2+R_{12}^2}</tex>, то ответ это <tex>R_2</tex>., так как угол между <tex>R_2</tex> и <tex>R_{12}</tex> при данном условии оказывается тупым*<tex>R_2 \ge \sqrt{R_1^2+R_{12}^2}</tex>, то ответ это <tex>R_1</tex>., так как угол между <tex>R_1</tex> и <tex>R_{12}</tex> при данном условии оказывается тупым
*Оба предыдущих условия ложны, то <tex>abs(|R_{12} \times R_1|/|R_{12}|)</tex>, где <tex>R_{12}</tex> и <tex>R_1</tex> нужно рассматривать как вектора, а умножение как векторное произведение.