#математика #векторы
Все точки заданы координатами. При построении перпендикуляра от точки к отрезку хочу
узнать, попадает ли он(перпендикуляр) на заданный отрезок или нет. Мой вариант таков:
посчитать угол ∠МАВ и ∠МВА. От точки можно построить перпендикуляр при условии,что
угол будет и в первом и во втором случае 0°< ∠ < 90°.
Ответы
Ответ 1
Один из способов - посчитать скалярные произведения векторов AB.dot.BM и AB.dot.AM. Если знаки этих произведений разные, то проекция точки лежит на отрезке. (По сути - это сравнение углов с прямым без непосредственного их вычисления) Если же сама проекция всё равно будет считаться, то можно, как здесь сделано, посмотреть величину t (отношение двух скалярных произведений (AM.dot.AB) / (AB.dot.AB)) - если она в пределах 0..1, то точка проекции лежит на отрезке.Ответ 2
Вот нашел еще одно решение через библиотеку NumPy. import numpy as np vert = np.array([[-10, -10], [3, 3]]) point = np.array([-5, -5]) side1 = vert[1] - vert[0] print("side coord", side1) proj_side1 = point - vert[0] if 0 <= np.dot(side1, proj_side1) <= np.dot(side1, side1): print("in line") else: print("not in line")
Комментариев нет:
Отправить комментарий