2D геометрии: как проверить, находится ли точка внутри угла

У меня есть следующий геометрический вопрос в 2D:

У меня есть точка, из которой я бросаю бесконечный угол (2D-конус), который задается направлением и углом. (точка и направление образуют вектор, а с каждой стороны половина угла образует 2D-конус)

теперь я хочу проверить, находится ли другая точка в 2D внутри этого конуса или снаружи.

как этого можно добиться? спасибо!

4 ответов


вычислить вектор от центра конуса до точки запроса. Нормализуйте вектор длины 1, Возьмите центральный вектор конуса и нормализуйте его также до длины 1.
Теперь возьмем точечное произведение между векторами. Скалярное произведение двух нормализованных векторов-это косинус угла между ними. Взять arccos (acos на большинстве языков) точечного продукта, и вы получите угол. сравните этот угол с угла конуса (угол в описание.) если его нижняя, то точка, о которой идет речь, находится внутри конуса.

это работает в 2D и 3D.


вычислите угол направления, используя arctg направления. Вычесть начало координат из контрольной точки. Вычислите его угол (снова через arctg нормализованного вектора) и проверьте, находится ли он в границах угла.


Я бы сказал, что лучший способ-спроецировать точку на 2D-поверхность, перпендикулярную направлению конусов. Затем вы вычисляете отогональное расстояние между той же плоскостью и точкой. Наконец, вы знаете ширину конуса на этой высоте, поэтому вы можете видеть, находится ли точка вне этой ширины.


пусть вектор от точки начала координат до указанной точки составляет угол A с нормалью, проходящей через центр. Если угол A меньше половины угла конуса, он лежит внутри другого снаружи.