У меня к вам довольно простой вопрос ..
Я чувствую, что должен был найти ответ давным-давно, но почему-то я не могу обернуться вокруг этой тривиальной проблемы.
Учитывая вектор v = (x, y), я хотел бы знать, что это «общая» ориентация. Это «Вверх», «Вниз», «Влево» или «Вправо»
Общая ориентация вектора - «Вверх», если ориентация вектора находится между 45 и 135 градусами. «Слева» от 135 до 225 градусов. «Вниз» находится между 225 и 315 градусами. «Право» составляет от 315 до 45 градусов.
Меня не особо волнуют случаи, когда угол составляет точно 45, 135, 225 или 315 градусов.
Смысл в том, что я не хочу использовать тригонометрию. Я почти уверен, что есть простое решение.
Я думаю, что решение могло бы разделить весь круг на восемь. Вот что у меня есть.
if(x > 0 && y > x)
return Up
if(x > 0 && y > 0 && y < x )
return Right
... etc ...
По сути, я знаю, что могу найти решение. Меня больше интересует ваш собственный подход к этой проблеме.
Спасибо!
РЕДАКТИРОВАТЬ : используемый вектор не нормализован. Вы можете представить любой вектор, используя пару точек. Просто сделайте вид, что начало вектора (0,0).