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 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)
так что ли ?


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

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