Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2009, 13:01   #1
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию Не могу вычислить формулу для расчёта координат камеры

Есть объект (танк), он всегда в центре камеры. Пока клавиши свободно управляют камерой, но надо, чтобы она двигалась по полусфере и объект был всегда в центре. Кто знает формулу, или кто знает, где её достать?
anyx вне форума Ответить с цитированием
Старый 16.09.2009, 14:34   #2
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Ты можешь хотябы схему нарисовать как должна вести себя камера, а то я что-то не понял.
Вадим Буренков вне форума Ответить с цитированием
Старый 16.09.2009, 15:10   #3
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

В смысле, кто знает формулу?
Есть три координаты (x,y,z). Поскольку детального описания где да что должно быть расположено нет, то предположу, что танк есть точка в пространстве. Эту точку и будем считать началом координат для камеры, коли уж камера привязана к нему. Т.е. камера считает, что танк имеет координаты (0,0,0). Далее в зависимости от того, насколько камера должна быть удалена от танка и рассчитываем координаты камеры. Пусть расстояние от камеры до танка есть R. Тогда поскольку
R = sqrt(x*x,y*y,z*z)
пересчитываем координаты камеры соответсвенно:
при нажатиях клавиш Влево-вправо должны изменяться координаты x и z.
при нажатиях клавиш Вверх-вниз должны изменяться координаты y и z.
При этом очевидно, что x0*x0 + z0*z0 = x1*x1 + z1*z1, где x0,z0 - значения до применения формулы. x1,z1 - после.
А далее вспоминаем, что не учили тригонометрию в школе, поэтому не знаем, зачем нужны функции синуса и косинуса.
То бишь, функции синус и косинус ведут себя таким же образом, как и x0,z0,x1,z1. Поэтому со спокойной совестью принимаем, что x0 = L*sin(X0), z0 = L*sin(Z0), x1 = L*sin(X1), z1 = L*sin(Z1). А далее уже либо вы сами дорабатываете, либо говорите мне хотите ли вы изменять положение камеры при нажатии клавиши на какое-то конкретное расстояние в пространстве, либо вам пойдет и так (будете изменять углы на какое-то конкретное значение).
mMAg вне форума Ответить с цитированием
Старый 16.09.2009, 15:55   #4
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
Восклицание Полное описание

Первый файл - картинка, показвающая полусферу, по поверхности которой должна двигаться камера (не забываем, что смотрит она всегда на танк, но здесь дело уже в расчёте углов, с ним я сам справлюсь). Камера - красная стрелка. Танк - чёрная точка.

На плоскости всё это дело можно расчитать по теореме Пифагора (второй файл). Но я не знаю, как это сделать в пространстве. РАСЧИТАТЬ НАДО КООРДИНАТЫ x,y,z!

Тригонометрию я действительно в школе не учил, ибо учусь в девятом классе.
Изображения
Тип файла: jpg Безымянный.jpg (10.2 Кб, 133 просмотров)
Тип файла: jpg Безымянный2.jpg (12.5 Кб, 137 просмотров)
anyx вне форума Ответить с цитированием
Старый 16.09.2009, 16:13   #5
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Простите за дезинформацию, я указал формулы неправильно, вот так вот надо:
x0 = L*sin(X0), z0 = L*cos(Z0), x1 = L*sin(X1), z1 = L*cos(Z1) - и это только для первого случая.
А вообще я вам вот какой совет лучше дам:
В пространстве такой же расчет как и на плоскости, которую в показали.
Нюансик только один есть:
При нажатии на вверх-вниз, влево-вправо считается по тем формулам, что у вас на втором рисунке, а одна из координат остается неизменной.
При этом длина R в пространстве как рассчитывается я привел. Достаточно лишь вести расчеты с L, а не R и при этом держать в уме, что они не равны.
//Да, и еще, я себе немного не так плоскости представлял, поэтому вам и здесь придется переделать под себя
mMAg вне форума Ответить с цитированием
Старый 16.09.2009, 16:27   #6
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
Радость Спасибо

Цитата:
Сообщение от mMAg Посмотреть сообщение
//Да, и еще, я себе немного не так плоскости представлял, поэтому вам и здесь придется переделать под себя
Окружность - это не плоскость, да, окружность - часть плоскости.

То-есть не пользоваться единой формулой, а лишь изменять две координаты относительно их текущего значения? Я пошёл прогать...
anyx вне форума Ответить с цитированием
Старый 16.09.2009, 16:44   #7
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Цитата:
То-есть не пользоваться единой формулой, а лишь изменять две координаты относительно их текущего значения?
Да, именно так.

Цитата:
Окружность - это не плоскость, да, окружность - часть плоскости.
Не поспоришь.

Я написал, то что хотел написать. Я имел ввиду, что Оси координат не так себе рисовал в уме, поэтому плоскости Oxy, Oxz, Oyz не в таком положении представлял, и мои формулы посему вам могут не подойти. Но вы, как я вижу, и сами умеете думать. Поэтому это не проблема.
mMAg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программу для расчёта площади окружности Rostbook Помощь студентам 14 28.06.2009 00:54
Нужна программа для расчёта кофигурации обогрева Shtiever Фриланс 3 07.06.2009 20:34
Как в паскале регистрировать время? формулы расчёта новых координат Ustim Помощь студентам 13 05.03.2008 17:44
как вычислить формулу? Sergeus Microsoft Office Excel 2 26.02.2008 23:56