2D геометрии: как проверить, находится ли точка внутри угла
У меня есть следующий геометрический вопрос в 2D:
У меня есть точка, из которой я бросаю бесконечный угол (2D-конус), который задается направлением и углом. (точка и направление образуют вектор, а с каждой стороны половина угла образует 2D-конус)
теперь я хочу проверить, находится ли другая точка в 2D внутри этого конуса или снаружи.
как этого можно добиться? спасибо!
4 ответов
вычислить вектор от центра конуса до точки запроса. Нормализуйте вектор длины 1, Возьмите центральный вектор конуса и нормализуйте его также до длины 1.
Теперь возьмем точечное произведение между векторами. Скалярное произведение двух нормализованных векторов-это косинус угла между ними. Взять arccos (acos
на большинстве языков) точечного продукта, и вы получите угол. сравните этот угол с угла конуса (угол в описание.) если его нижняя, то точка, о которой идет речь, находится внутри конуса.
это работает в 2D и 3D.
вычислите угол направления, используя arctg направления. Вычесть начало координат из контрольной точки. Вычислите его угол (снова через arctg нормализованного вектора) и проверьте, находится ли он в границах угла.
Я бы сказал, что лучший способ-спроецировать точку на 2D-поверхность, перпендикулярную направлению конусов. Затем вы вычисляете отогональное расстояние между той же плоскостью и точкой. Наконец, вы знаете ширину конуса на этой высоте, поэтому вы можете видеть, находится ли точка вне этой ширины.
пусть вектор от точки начала координат до указанной точки составляет угол A с нормалью, проходящей через центр. Если угол A меньше половины угла конуса, он лежит внутри другого снаружи.