forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Гравитация в X Y Z (http://forum.boolean.name/showthread.php?t=7535)

TEHb08 31.12.2008 04:16

Гравитация в X Y Z
 
Люди подскажите как зделать так что бы объекты которые находятся в космосе притягивались друг к другу но в то же время не НЕ НАПРАВЛЯЛИСЬ друг на друга, например есть сфера и мне нужно что бы во круг сферы летал объект тоесть когда им управляешь:SOS:

ABTOMAT 31.12.2008 04:20

Ответ: Гравитация в X Y Z
 
эээ
ну каждому объекты завести вектор скорости (vX,vY,vZ) и пдвигать объект по этому вектору. Если надо приложить силу (т.е. ускорение) то ею меняем этот самый вектор скорости. в-общем-то не так и сложно
может если будет время побездельничать, так пример сделаю

TEHb08 31.12.2008 04:22

Ответ: Гравитация в X Y Z
 
Цитата:

Сообщение от ABTOMAT (Сообщение 93252)
эээ
ну каждому объекты завести вектор скорости (vX,vY,vZ) и пдвигать объект по этому вектору. Если надо приложить силу (т.е. ускорение) то ею меняем этот самый вектор скорости. в-общем-то не так и сложно
может если будет время побездельничать, так пример сделаю

Ну да сложно не сложно я уже второй день зделать не могу +(((
все где то что то не сходится +(

NitE 31.12.2008 04:38

Re: Гравитация в X Y Z
 
опиши конкретно и понятно что сделать надо, и учти что из своей квартиры ты никак несможешь заставить объекты в космосе притягиватся друг к другу ;)

HolyDel 31.12.2008 06:43

Ответ: Гравитация в X Y Z
 
смотри...
у объекта есть позиция x,y,z, вектор перемещениея - dx,dy,dz, точка, к которой он притягивается cx,cy,cz и скаляр - сила притяжения - f.
Код:

mx = cx - x
my = cy - y
mz = cz - z

ml = sqrt(mx^2 + my^2 + mz^2) / f
mx = mx  / ml
my = my  / ml
mz = my  / ml

cx = cx + mx
cy = cy + my
cz = cz + mz


mr.DIMAS 01.01.2009 01:45

Re: Гравитация в X Y Z
 
ваще кул, и потому что все математически!
( писал с бокалом вина в руке )

NitE 01.01.2009 01:47

Re: Гравитация в X Y Z
 
Цитата:

( писал с бокалом вина в руке )
вау ! xD

TEHb08 03.01.2009 00:10

Ответ: Гравитация в X Y Z
 
ну допустим что бы сделать орбиту тоесть летишь прямо а он сам по кругу во круг земли летел

p.s. Только от праздников отошол +)

NitE 03.01.2009 02:01

Re: Гравитация в X Y Z
 
мм знал бы я о чем говорю... ну короче надо сделать чтобы объект всегда был в координатах земли + скока те надо скажем enityx(earth,1)+10 а потом просто менять их както синусами косинусами и т.д. - я хз что это, недорос ещё, так-что непомогу...

Morganolla 03.01.2009 14:05

Ответ: Гравитация в X Y Z
 
Так ведь HolyDel все разжевал... Чего вы паритесь?
ЗЫ. Единственно, что можно добавить - это придать объекту орбитальную скорость равную первой космической (по касательной относительно сферы), иначе он упадет на сферу!

alcoSHoLiK 03.01.2009 14:19

Ответ: Гравитация в X Y Z
 
TEHb08
Поворачивай сферу. Объект будет висеть над ней в одной позиции, а сфера под ним вращается вокруг оси, параллельной оси Х объекта в мировых координатах. Это для случая, когда вид от 3-го лица. Если камера где-то сбоку зафиксирована, тогда все немножко сложнее)

TEHb08 03.01.2009 21:09

Ответ: Гравитация в X Y Z
 
Цитата:

Сообщение от alcoSHoLiK (Сообщение 93534)
TEHb08
Поворачивай сферу. Объект будет висеть над ней в одной позиции, а сфера под ним вращается вокруг оси, параллельной оси Х объекта в мировых координатах. Это для случая, когда вид от 3-го лица. Если камера где-то сбоку зафиксирована, тогда все немножко сложнее)

тоже как вариант только если планета 1 а если целая солнечная система и влететь в атмосферу игрок может с любой стороны и под разным наклоном

NitE 03.01.2009 21:46

Re: Гравитация в X Y Z
 
ну те ещё рано такое делать ))) если очень хочешь космо-сим то делай пока без таких тонкостей...

TEHb08 03.01.2009 22:00

Ответ: Re: Гравитация в X Y Z
 
Цитата:

Сообщение от NitE (Сообщение 93563)
ну те ещё рано такое делать ))) если очень хочешь космо-сим то делай пока без таких тонкостей...

да не норма почти зделал там хороший пример привели с формулами

NitE 03.01.2009 22:56

Re: Гравитация в X Y Z
 
ты имеешь ввиду то что HolyDel написал ? если нет то делись ))

TEHb08 03.01.2009 23:58

Ответ: Re: Гравитация в X Y Z
 
Цитата:

Сообщение от NitE (Сообщение 93572)
ты имеешь ввиду то что HolyDel написал ? если нет то делись ))

угу только только появились еще проблемки +)

NitE 04.01.2009 00:07

Re: Гравитация в X Y Z
 
^ это знак возведения в степень или умножения ?

jimon 04.01.2009 00:07

Ответ: Гравитация в X Y Z
 
NitE
степень

Максим 04.01.2009 00:19

Ответ: Гравитация в X Y Z
 
Graphics3D 1024,768,32,0
SetBuffer BackBuffer ()

camera=CreateCamera()
PositionEntity camera,0,50,-50
RotateEntity camera,50,0,0

pivot=CreatePivot()
sphere1=CreateSphere(8,pivot)
ScaleEntity sphere1,3,3,3
PositionEntity sphere1,30,0,0
EntityColor sphere1,255,120,0

pivot2=CreatePivot(sphere1)
sphere2=CreateSphere(8,pivot2)
PositionEntity sphere2,4,0,0

While Not KeyHit(1)
TurnEntity pivot,0,1,0
If KeyDown(17) TurnEntity pivot2,0,4,4
If KeyDown(31) TurnEntity pivot2,0,-4,-4
RenderWorld()
UpdateWorld()
Flip
Wend
End

Управление W и S . :-D

Morganolla 04.01.2009 00:33

Ответ: Гравитация в X Y Z
 
Коорд. объекта x,y,z. сферы cx,cy,cz. Массы Мо,Мс. Гравитац. константа - g. Скорость объекта vx,vy,vz.

mx = cx - x
my = cy - y
mz = cz - z

Расстояние между телами:

ml = sqrt(mx^2 + my^2 + mz^2)

Общее ускорение а:

а= g*Mc/ml^2

Ускорение по осям:
аx = а*mx / ml
аy = а*my / ml
аz = а*my / ml

Приращение скоростей:

vx = vx + ax*dt
vy = vy + ay*dt
vz = vz + az*dt

где dt - шаг интегрирования (время отрисовки кадра)

Новые координаты тела:

x=x+vx*dt
y=y+vy*dt
z=z+vz*dt
И все! Очень просто!

TEHb08 04.01.2009 01:09

Ответ: Гравитация в X Y Z
 
еще придумал фишку

Создаем точку, направляем на сферу и даем скорость точка смещяется к земле в то же время меняем координаты объекта на те что у точки и делаем обычное управление для корабля :cool:

TEHb08 04.01.2009 02:29

Ответ: Гравитация в X Y Z
 
Цитата:

Сообщение от Morganolla (Сообщение 93581)

а= g*Mc/ml^2

Ускорение по осям:
аx = а*mx / ml
аy = а*my / ml
аz = а*my / ml

Приращение скоростей:

vx = vx + ax*dt
vy = vy + ay*dt
vz = vz + az*dt

Возвращает нуль

TEHb08 04.01.2009 02:35

Ответ: Гравитация в X Y Z
 
не понятно

Morganolla 04.01.2009 12:39

Ответ: Гравитация в X Y Z
 
Формулы и алгоритм правильные, у меня прекрасно работают. Надо разобраться, почему у тебя не получается. Включи отладку.
А что не понятно?

TEHb08 04.01.2009 18:57

Ответ: Гравитация в X Y Z
 
Цитата:

Сообщение от Morganolla (Сообщение 93596)
Формулы и алгоритм правильные, у меня прекрасно работают. Надо разобраться, почему у тебя не получается. Включи отладку.
А что не понятно?

Дело в том что все запускается но не чего не происходит +((((

Дай свой пример посмотреть, то я что то значит в формулах не то написал

impersonalis 04.01.2009 19:05

Ответ: Гравитация в X Y Z
 
тип перменной должен быть float

TEHb08 04.01.2009 19:59

Ответ: Гравитация в X Y Z
 
не чего не происходит можно попробывать функцией TranslateEntity зделать гравитацию

HolyDel 04.01.2009 22:35

Ответ: Гравитация в X Y Z
 
Импер все сказал.
октоторп забыли после объявления переменной.
надо: ax#,ay#,... и т.д.

TEHb08 04.01.2009 22:41

Ответ: Гравитация в X Y Z
 
щя бум тестить +)

TEHb08 04.01.2009 22:45

Ответ: Гравитация в X Y Z
 
че то я не догнал
ax#=Float(а*mx / ml)
так что ли ?

NitE 05.01.2009 00:20

Re: Гравитация в X Y Z
 
аx# = а*mx / ml
и все дела )))

ну точнее даже аx# = а#*mx# / ml#

TEHb08 05.01.2009 00:33

Ответ: Re: Гравитация в X Y Z
 
Цитата:

Сообщение от NitE (Сообщение 93659)
аx# = а*mx / ml
и все дела )))

ну точнее даже аx# = а#*mx# / ml#

спс +)

Morganolla 05.01.2009 15:40

Ответ: Гравитация в X Y Z
 
Рекомендую сделать координаты х у z и скорости как double, остальные можно как float. Иначе утонете в ошибках!!! Я думал вы это сами просечете! Детский сад какой-то!:)

impersonalis 05.01.2009 16:24

Ответ: Гравитация в X Y Z
 
Morganolla продемонстрируй пример быстрой инициализации double переменной на Blitz3D

TEHb08 05.01.2009 17:17

Ответ: Гравитация в X Y Z
 
всем спасибо я там зделал функцию для такой гравитации по примеру
если кому надо то в теме функция гравитации

avel 06.01.2009 06:54

Ответ: Гравитация в X Y Z
 
оооо, я смотрю, кто-то задумал убийцу споры... )))

TEHb08 06.01.2009 13:14

Ответ: Гравитация в X Y Z
 
Цитата:

Сообщение от avel (Сообщение 93774)
оооо, я смотрю, кто-то задумал убийцу споры... )))

да не Spore скучная игрушка но прикольная

Morganolla 06.01.2009 13:46

Ответ: Гравитация в X Y Z
 
Цитата:

Сообщение от impersonalis (Сообщение 93708)
Morganolla продемонстрируй пример быстрой инициализации double переменной на Blitz3D

Сожалею, но от Б3Д я отказался и дабла там нету увы! Вам придется пользоваться простой флоат, и при залете в далекий космос ( от начала координат) вы будете хватать ошибки из-за ограниченности мантиссы. Сам я перешел на С и проблем не имею. :)

impersonalis 06.01.2009 16:39

Ответ: Гравитация в X Y Z
 
2Morganolla
дык вот - тема то по B3D, а не по алгоритмике.
В приведённом примере, можно обойтись флоатом - стоит лишь подумать о рациональном программировании.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot