@Fragman

Как правильно построить поле зрения?

Требуется построить поле зрения игрока.
Игрок представляет собой точку радиусом 10, с известными координатами. Также известны координаты куда он смотрит на canvas и его угол обзора. Необходимо начертить его поле зрения. Игрок находится на карте, которое выводится картинкой и в javascipt представлено, как массив пикселей(0 - нет стены, 1 - есть). Необходимо, чтобы поле зрения упиралось в стены карты.
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
samodum
@samodum
Школьная геометрия.
1) Сначала вычисляем угол, куда (X, Y) игрок (x0, y0) смотрит:
dx = X - x0; dy = Y = y0;
d = sqrt(dx*dx + dy*dy); - длина отрезка
alpha = arccos(dx/d); - вычисляем угол. Здесь нужно будет дополнить, т.к. знак может потеряться. Смотри на dx и dy.

2). Теперь строим угол обзора (betaLeft, betaRight):
betaLeft = alpha - ugObz/2;
betaRight = alpha + ugObz/2;

3). Всё. Теперь вычисляем точки, через которые будет проходить линия обзора:
xL = x0 + cos(betaLeft) * Radius;
yL = y0 + sin(betaLeft) * Radius;
xR = x0 + cos(betaRight) * Radius;
yR = y0 + sin(betaRight) * Radius;

И строишь через эти точки бесконечную линию, чтобы она выходила за пределы экрана. Можешь для этого подобрать Radius такой, чтобы он был больше разрешения экрана
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы