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

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

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

Ответ
 
Опции темы
Старый 07.01.2013, 14:33   #1
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Хлопушка

Я всех уже задолбал физикой, но всё же...
Я сделал новогоднюю хлопушку, из которой вылетают шарики по нажатию левой кнопки мыши. Направление их движения естественно должно зависеть от соответствующего наклона хлопушки. Я геометрически нашёл проекции скоростей шариков на все оси, вот рисунок и уравнения, которые я использовал:

Дело почти элементарное, но вот если менять углы, то шарики начинают отклоняться от нужной мнимой оси очень значительно. Подскажите, кто разбирается, это блитз чего-то не понимает или я туплю(что более вероятно)?
Вложения
Тип файла: rar boom.rar (250.6 Кб, 480 просмотров)
__________________
(Offline)
 
Ответить с цитированием
Старый 07.01.2013, 15:10   #2
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Хлопушка

А что мешает двигать шарики вдоль локальной оси совпадающей с осью хлопушки?
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
burovalex (18.01.2013)
Старый 07.01.2013, 15:26   #3
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Хлопушка

Мешает сила тяжести и сила сопротивления воздуха, а впоследствии и ветер...
__________________
(Offline)
 
Ответить с цитированием
Старый 07.01.2013, 16:01   #4
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Хлопушка

Сообщение от Devilox Посмотреть сообщение
Мешает сила тяжести и сила сопротивления воздуха, а впоследствии и ветер...
Почему мешает? Можно же менять глобальные координаты для симуляции гравитации и ветра
(Offline)
 
Ответить с цитированием
Старый 07.01.2013, 16:18   #5
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Хлопушка

Но с силой сопротивления сложнее(нужна для ограничения ускорения шариков): она направлена всегда в противоположную скорости сторону, надо, мне кажется, всё-таки как-то разложить скорость по осям... Или есть способ и силу сопротивления воздуха имитировать?
__________________
(Offline)
 
Ответить с цитированием
Старый 07.01.2013, 18:20   #6
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: Хлопушка

Используй локальные координаты и углы. Их специально придумали для подобных случаев.
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 14:02   #7
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Хлопушка

Я кое-что поменял, код стал немного компактнее... Может так будет легче разобраться:
ex_part\speed = Rnd(0.1,0.11)
		
a1# = (Sin(90 - Abs(roll))^2) / (Cos(90 - Abs(roll))^2)
b1# = (Tan(90 - Abs(roll))^2) / (Tan(90 - Abs(pitch))^2)
a2# = (Cos(90 - Abs(pitch))^2) / (Sin(90 - Abs(pitch))^2)
b2# = (Cos(90 - Abs(roll))^2) / (Sin(90 - Abs(roll))^2)
a3# = (Sin(90 - Abs(pitch))^2) / (Cos(90 - Abs(pitch))^2)
b3# = (Tan(90 - Abs(pitch))^2) / (Tan(90 - Abs(roll))^2) 

ex_part\xspeed = Sqr(ex_part\speed^2 / (1 + a1 + b1))
ex_part\yspeed = Sqr(ex_part\speed^2 / (1 + a2 + b2))
ex_part\zspeed = Sqr(ex_part\speed^2 / (1 + a3 + b3))
__________________
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 15:28   #8
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Хлопушка

Я решил затестить скорость движения по локальным координатам и по моему способу:



Почему скорость по оси X в локальных координатах такая странная, если по оси X и Z хлопушка повёрнута на 45 градусов?(расчёт всех скоростей проводился через глобальные координаты)
__________________
(Offline)
 
Ответить с цитированием
Старый 13.01.2013, 17:58   #9
Devilox
ПроЭктировщик
 
Аватар для Devilox
 
Регистрация: 14.01.2012
Адрес: Зеленоград
Сообщений: 192
Написано 5 полезных сообщений
(для 9 пользователей)
Ответ: Хлопушка

Я заметил ещё кое-какую вещь: если поворачивать хлопушку на одинаковые углы по оси X и Z, то с увеличением угла от 0 до 90 хлопушка начинает кривить и, вместо того, чтобы лечь на плоскость XOZ под 45 градусов к осям X и Z, ложится на ось Z, притом вращаясь восьмёркой... Может, кто знает, есть ли способ вращать цилиндр не силами Blitz-а? А кватернионы не помогут?
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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