Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 14.07.2009, 11:32   #1
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
If объект находится по центру экрана

Как можно узнать, 3д-объект находиться по центру экрана или нет. У меня алгоритм в котором объекты выезжают из-за краёв вида и движутся в другую сторону(в другой край). Но мне нужно чтобы они останавливались в тот момент когда для пользователя они находятся в центре экрана! Вот нужна функция которая бы этим занималась, что возвращала 1 если по середине экрана и 0 если нет.

(Объкты разных форм и разых размеров, на разном расстоянии от камеры)

Не знаю как это замутить...camera pick что ли...вообщем нужна ваша помощь.
(Offline)
 
Ответить с цитированием
Старый 14.07.2009, 11:34   #2
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: If объект находится по центру экрана

А что ты понимаешь под "объект стоит посередине экрана"? Его центр? или же край?
(Offline)
 
Ответить с цитированием
Старый 14.07.2009, 11:57   #3
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: If объект находится по центру экрана

А что ты понимаешь под "объект стоит посередине экрана"? Его центр? или же край?
Центр. Именно центр визуальный, а не относительно которого выполняются все операции с объектом. Впрочем в моём случае все объекты - прямоугольные квады, достаточно легко передвинуть его привязочный цетр в визульный центр объекта.
(Offline)
 
Ответить с цитированием
Старый 14.07.2009, 12:49   #4
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: If объект находится по центру экрана

тебе нужно перевести 3д координаты в координаты экрана и сверять их с центром экрана. Юзай команды CameraProject, ProjectedX(), ProjectedY()
(Offline)
 
Ответить с цитированием
Старый 14.07.2009, 14:38   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: 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)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Затемнение экрана SubZer0 Программирование 4 03.08.2014 21:35
Lib_rc: поворот экрана Piligrim Библиотеки 22 06.04.2010 22:58
Очистка экрана Winner Основной форум 7 14.02.2010 00:08
Вектора и сейф экрана... VotapilD Основной форум 12 22.12.2009 23:21
Разве нельзя поставить якорь по центру строки? О_о Phantom Программирование 4 22.03.2009 00:48


Часовой пояс GMT +4, время: 11:30.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com