![]() |
Гравитация в X Y Z
Люди подскажите как зделать так что бы объекты которые находятся в космосе притягивались друг к другу но в то же время не НЕ НАПРАВЛЯЛИСЬ друг на друга, например есть сфера и мне нужно что бы во круг сферы летал объект тоесть когда им управляешь:SOS:
|
Ответ: Гравитация в X Y Z
эээ
ну каждому объекты завести вектор скорости (vX,vY,vZ) и пдвигать объект по этому вектору. Если надо приложить силу (т.е. ускорение) то ею меняем этот самый вектор скорости. в-общем-то не так и сложно может если будет время побездельничать, так пример сделаю |
Ответ: Гравитация в X Y Z
Цитата:
все где то что то не сходится +( |
Re: Гравитация в X Y Z
опиши конкретно и понятно что сделать надо, и учти что из своей квартиры ты никак несможешь заставить объекты в космосе притягиватся друг к другу ;)
|
Ответ: Гравитация в X Y Z
смотри...
у объекта есть позиция x,y,z, вектор перемещениея - dx,dy,dz, точка, к которой он притягивается cx,cy,cz и скаляр - сила притяжения - f. Код:
mx = cx - x |
Re: Гравитация в X Y Z
ваще кул, и потому что все математически!
( писал с бокалом вина в руке ) |
Re: Гравитация в X Y Z
Цитата:
|
Ответ: Гравитация в X Y Z
ну допустим что бы сделать орбиту тоесть летишь прямо а он сам по кругу во круг земли летел
p.s. Только от праздников отошол +) |
Re: Гравитация в X Y Z
мм знал бы я о чем говорю... ну короче надо сделать чтобы объект всегда был в координатах земли + скока те надо скажем enityx(earth,1)+10 а потом просто менять их както синусами косинусами и т.д. - я хз что это, недорос ещё, так-что непомогу...
|
Ответ: Гравитация в X Y Z
Так ведь HolyDel все разжевал... Чего вы паритесь?
ЗЫ. Единственно, что можно добавить - это придать объекту орбитальную скорость равную первой космической (по касательной относительно сферы), иначе он упадет на сферу! |
Ответ: Гравитация в X Y Z
TEHb08
Поворачивай сферу. Объект будет висеть над ней в одной позиции, а сфера под ним вращается вокруг оси, параллельной оси Х объекта в мировых координатах. Это для случая, когда вид от 3-го лица. Если камера где-то сбоку зафиксирована, тогда все немножко сложнее) |
Ответ: Гравитация в X Y Z
Цитата:
|
Re: Гравитация в X Y Z
ну те ещё рано такое делать ))) если очень хочешь космо-сим то делай пока без таких тонкостей...
|
Ответ: Re: Гравитация в X Y Z
Цитата:
|
Re: Гравитация в X Y Z
ты имеешь ввиду то что HolyDel написал ? если нет то делись ))
|
Ответ: Re: Гравитация в X Y Z
Цитата:
|
Re: Гравитация в X Y Z
^ это знак возведения в степень или умножения ?
|
Ответ: Гравитация в X Y Z
NitE
степень |
Ответ: Гравитация в 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 |
Ответ: Гравитация в 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 И все! Очень просто! |
Ответ: Гравитация в X Y Z
еще придумал фишку
Создаем точку, направляем на сферу и даем скорость точка смещяется к земле в то же время меняем координаты объекта на те что у точки и делаем обычное управление для корабля :cool: |
Ответ: Гравитация в X Y Z
Цитата:
|
Ответ: Гравитация в X Y Z
не понятно
|
Ответ: Гравитация в X Y Z
Формулы и алгоритм правильные, у меня прекрасно работают. Надо разобраться, почему у тебя не получается. Включи отладку.
А что не понятно? |
Ответ: Гравитация в X Y Z
Цитата:
Дай свой пример посмотреть, то я что то значит в формулах не то написал |
Ответ: Гравитация в X Y Z
тип перменной должен быть float
|
Ответ: Гравитация в X Y Z
не чего не происходит можно попробывать функцией TranslateEntity зделать гравитацию
|
Ответ: Гравитация в X Y Z
Импер все сказал.
октоторп забыли после объявления переменной. надо: ax#,ay#,... и т.д. |
Ответ: Гравитация в X Y Z
щя бум тестить +)
|
Ответ: Гравитация в X Y Z
че то я не догнал
ax#=Float(а*mx / ml) так что ли ? |
Re: Гравитация в X Y Z
аx# = а*mx / ml
и все дела ))) ну точнее даже аx# = а#*mx# / ml# |
Ответ: Re: Гравитация в X Y Z
Цитата:
|
Ответ: Гравитация в X Y Z
Рекомендую сделать координаты х у z и скорости как double, остальные можно как float. Иначе утонете в ошибках!!! Я думал вы это сами просечете! Детский сад какой-то!:)
|
Ответ: Гравитация в X Y Z
Morganolla продемонстрируй пример быстрой инициализации double переменной на Blitz3D
|
Ответ: Гравитация в X Y Z
всем спасибо я там зделал функцию для такой гравитации по примеру
если кому надо то в теме функция гравитации |
Ответ: Гравитация в X Y Z
оооо, я смотрю, кто-то задумал убийцу споры... )))
|
Ответ: Гравитация в X Y Z
Цитата:
|
Ответ: Гравитация в X Y Z
Цитата:
|
Ответ: Гравитация в X Y Z
2Morganolla
дык вот - тема то по B3D, а не по алгоритмике. В приведённом примере, можно обойтись флоатом - стоит лишь подумать о рациональном программировании. |
Часовой пояс GMT +4, время: 05:24. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot