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

function Hello()
{
    alert("caller is " + Hello.caller);
}

Примечание, что эта функция нестандартна , от Function.caller :

Нестандартный
Эта функция нестандартна и не находится на дорожке стандартов. Не используйте его на местах производства, стоящих перед сетью: это не будет работать на каждого пользователя. Могут также быть большие несовместимости между реализациями, и поведение может измениться в будущем.

следующее является старым ответом с 2008, который больше не поддерживается в современном JavaScript:

function Hello()
{
    alert("caller is " + arguments.callee.caller.toString());
}
8
задан clamp 22 July 2009 в 17:57
поделиться

4 ответа

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

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

13
ответ дан 5 December 2019 в 10:43
поделиться

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

1
ответ дан 5 December 2019 в 10:43
поделиться

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

1
ответ дан 5 December 2019 в 10:43
поделиться

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

1
ответ дан 5 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: