Показать сообщение отдельно
Старый 14.07.2009, 14:38   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений
(для 15,676 пользователей)
Ответ: If объект находится по центру экрана

Простой способ:
Спроецировать координаты твоего квада на экран
CameraProject()
ProjectedX()
ProjectedY()
По теореме Пифагора проверить расстояние от центра экрана (GraphicsWidth() Shr 1, GraphicsHeight() Shr 1) до твоего объекта на экране (ProjectedX(), ProjectedY()) Если расстояние получится меньше N, то объект - в центре экрана, иначе - не в центре.
Сложный способ:
По теореме косинусов определить косинус угла альфа между вектором направления камеры и между вектором камера - квад. Косинус, равный 0 означает, что твоя камера направлена точно на квад (он в центре экрана). Косинус 1 означает, что камера смотрит точно перпендикулярно. Кроме того надо сделать проверку на знак синуса, ибо если камера повернётся в пределах 90° - 270°, то тут тоже косинус будет 0-1. Затем придумать порог N Є (0;1), при косинусе меньше которого объект считать в центре экрана.

Рекомендую использовать простой способ
Сложный способ пригодится, когда нет возможности использовать камеру (например, чтобы определить, направил ли бот оружие на какой-то объект) Чё-то не туда меян понесло, для твоего случая хватит и CameraProject, ProjectedX(), ProjectedY()

И да, теорема Пифагора, теорема косинусов.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
DeadElf (31.07.2009), ELIAS (17.07.2009), EvilChaotic (14.07.2009), Harter (14.07.2009)