Определение угла
Занялся разработкой 3D движка на python и возникла проблема: есть угол обзора игрока, а точнее два угла (left = angle - FOV/2 и right = angle + FOV/2)
и угол относительно некой материальной точки (вершина объекта) (формула angle = math.acos((x-self.x)/distance)), где x - координата вершины объекта, self.x - координата игрока, distance - расстояние от игрока до вершины, также при y-self.y < 0: angle = 2*math.pi - angle)
Нужно написать функцию, которая проверяет эти три угла и выводит 0, 1 или 2: если 1, что вершина находится между left и right, если 0 то левее, если 2, то правее.
Ответы (1 шт):
Если работать в углах - считаем знаковый угол между центральным направлением angle и направлением на объект
dx = x-self.x
dx = y-self.y
diff = math.atan2(dx*sin(angle)-dy*cos(angle), dy*sin(angle)+dx*cos(angle))
if abs(diff < Fov/2):
внутри сектора
elif diff > 0:
слева
else:
справа