Я пишу симуляцию на Python, которая включает в себя агентов, которые могут перемещаться в среде и имеют вектор скорости относительно среды. В среду также входят объекты другого типа (еда). Я хочу, чтобы агенты «видели» только пищу, которая находится на расстоянии r от агента, и только тогда, когда угол между едой и положительной осью x, тета, находится в пределах некоторого «поля зрения», которое определяется как +-альфа градусов от угла бета между вектором скорости и положительной осью X.
На иллюстрации, которую я добавил сюда, синяя стрелка — это вектор скорости, она образует угол бета с положительной осью x, и я хочу, чтобы агент видел только красные точки. когда я просто проверяю, является ли бета-альфа‹=тета‹=бета+альфа, я не получаю правильных результатов, когда диапазон (бета-альфа, бета+альфа) включает переход от отрицательных углов к положительным или от 2pi до 0 и наоборот наоборот
код:
dx = food.x - agent.x
dy = food.y - agent.y
theta = atan2(dy,dx)
alpha = pi/6.
Vx,Vy = agent.velocity[0], agent.velocity[1]
beta = atan2(Vy,Vx)
if (beta-alpha<=theta and theta<=beta+alpha):
food.color = (255,0,0)
else:
food.color = (0,0,0)
only when the angle between the food and the positive x axis, theta
. Какой это угол? Еда - это точка, верно, что вы подразумеваете под углом между точкой и линией? Какие две линии составляют угол тета? - person gaganbm   schedule 04.05.2014