|
|
|
Канал Игры Мечты: «Вопросы?» |
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
пишите сюда свои вопросы, касающиеся ИИ, физики объектов, построения мира по формулам и любые другие вопросы, которые вам взбредут в голову. Я буду отвечать, посмотрим на что я могу.
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Смысл?
_________________ У меня бисера не доxеpа. |
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
будем считать это за вопрос. Смысл в том, что люди, которые строят игру или пытаются строить игру, могут спросить меня по лубому вопросу. Я постораюсь ответить. Также можно спрашивать из любопытства, чтобы посмотреть, что же я отвечу.
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
unkAlien
421 EGP
   Репутация: 36 Сообщения: 860 Откуда: Челябинск Зарегистрирован: 05.06.2004
 |
|
Можно задавать совсем любые вопросы? Хорошо, спросим что-нить космосимное... Скажем, меня интересует общее решение ограниченной задачи трёх и более тел. Желательно получить готовую функцию положения КК от времени.
|
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Недобрый ты unkAlien, ох недобрый...
_________________ У меня бисера не доxеpа. |
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
unkAlien : |
Скажем, меня интересует общее решение ограниченной задачи трёх и более тел. Желательно получить готовую функцию положения КК от времени.
|
что значит ограниченная задача трех тел и что такое КК? Я во всех ваших сокращениях нима
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
YogSagot
1175 EGP
  Рейтинг канала: 1(8) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003
 |
|
КК - космический корабль!
зы. Про задачу трех тел это вообще анекдот. Но я в него лезть не буду, дам дорогу знающим.
зызы. Как я и думал, все быстро встало на свои места. Т.е. не ув. DeadMazaj на вопросы отвечает, а ему на вопросы отвечают
зызызы. Сорри, без обид
|
|
|
Theodor
100 EGP
 Репутация: 4 Сообщения: 163 Откуда: St.Petersburg Зарегистрирован: 27.06.2002
 |
|
Эхм, чего-йто весна вроде прошла, авитаминоз должен был закончиться ...
Весело у вас тут
|
|
|
unkAlien
421 EGP
   Репутация: 36 Сообщения: 860 Откуда: Челябинск Зарегистрирован: 05.06.2004
 |
|
Цитата: |
что значит ограниченная задача трех тел и что такое КК? Я во всех ваших сокращениях нима
|
Есть 2 точки с большой массой и некоторой начальной скоростью (планеты). Есть 1 точка с малой массой и некоторой начальной скоростью (космический корабль), она не оказывает влияния на движение планет. Найти зависимость его положения от времени в виде алгебраической функции. Использование рядов в ответе не приветствуется.
|
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
YogSagot : |
Сорри, без обид
|
я и не обижаюсь. Я знал, что тут будут подшучивать. Просто я программер одиночка и не знаю то, что знают коллективы программеров, которые общаются между собой. У меня другие взгляды на построение игр, чем у них.
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
vx:=vx-a*(sqrt(sqr(x-x1))/(x-x1))/sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1))-a*(sqrt(sqr(x-x2))/(x-x2))/sqrt(sqr(x-x2)+sqr(y-y2)+sqr(z-z2));
vy:=vy-a*(sqrt(sqr(y-y1))/(y-y1))/sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1))-a*(sqrt(sqr(y-y2))/(y-y2))/sqrt(sqr(x-x2)+sqr(y-y2)+sqr(z-z2));
vz:=vz-a*(sqrt(sqr(z-z1))/(z-z1))/sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1))-a*(sqrt(sqr(z-z2))/(z-z2))/sqrt(sqr(x-x2)+sqr(y-y2)+sqr(z-z2));
сюда надо вписать скорей функцию скорости, а потом координаты нахождения КК будут зависить от скорости. Если не будет скорости то не будет инерции.
теперь о формулах
(sqrt(sqr(x-x1))/(x-x1)) - эта часть формулы отвечает за знак, чтобы приплюсовать скорость по оси или убавить
/sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1)) - эта часть отвечает за изменение количества скорости. Чем дальше корабль от планеты, тем меньше на него действует притяжение
а* - меняя это параметр мы можем делать изменение скорости больше или меньше
sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1)) - расстояние от планеты до КК
совсем забыл:
x,y,z - координаты корабля
x1,y1,z1,x2,y2,z2 - координаты планет
формулы выполнены при условии, что все планеты будут одинаковые по размеру, ну или можно поменять вторую переменую А на B. Так же формулы учитывают гравитацию планет хоть на каком расстоянии, но можно это изменить.
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
unkAlien
421 EGP
   Репутация: 36 Сообщения: 860 Откуда: Челябинск Зарегистрирован: 05.06.2004
 |
|
Во-первых, что за таинственный параметр "a" и куда делись массы? У нас, вообще говоря, ньютоновская физика действует. Да, и ещё. Приближённое решение меня никак не устраивает - нужно точное.
Во-вторых, не надо писать километровые формулы - я не компилятор С++ и понимаю общепринятые математические выражения. Например, в данном примере, вместо sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1)) лучше поставить нечто вроде |X-X1|.
В-третьих, это была шутка. Данная задача в общем случае не решена до сих пор, кроме того, вполне возможно, что она вообще не имеет решения в таком виде.
P.S.
Цитата: |
vx:=vx+a*(sqrt(sqr(x-x1))/(x-x1))/sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1))+a*(sqrt(sqr(x-x2))/(x-x2))/sqrt(sqr(x-x2)+sqr(y-y2)+sqr(z-z2));
|
У меня есть смутное подозрение, что sqrt(sqr(x-x1))/(x-x1)==1 или -1 при (x-x1) != 0. Или так и было задумано?
|
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
unkAlien : |
У меня есть смутное подозрение, что sqrt(sqr(x-x1))/(x-x1)==1 или -1 при (x-x1) != 0. Или так и было задумано?
|
так и было задумано, это выражение пишет знак.
еще я маленько напутал с sqrt(sqr(x-x1)+sqr(y-y1)+sqr(z-z1)), потом напишу правильно
unkAlien : |
Во-первых, что за таинственный параметр "a"
|
см. выше
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
unkAlien
421 EGP
   Репутация: 36 Сообщения: 860 Откуда: Челябинск Зарегистрирован: 05.06.2004
 |
|
Цитата: |
так и было задумано, это выражение пишет знак.
|
А слабо было написать |x-x1|/(x-x1)? Или уж fabs(x-x1)/(x-x1), если вам так нравится C. Это раз. Два - в математике есть функция sign().
Цитата: |
unkAlien : |
Во-первых, что за таинственный параметр "a"
|
см. выше
|
Никакого параметра "a" быть не должно - это чушь полная. Кроме того, вся ваша формула такая же чушь. Если уж рассматривать планеты неподвижными, то должно быть нечто вроде:
M1,M2 - массы планет
X,X1,X2 - их координаты
A1=(G*M1/|X-X1|^3)*(X1-X)
A2=(G*M2/|X-X2|^3)*(X2-X)
A=A1+A2
Но A=d^2X/dt^2 (т.е. ускорение - вторая производная по времени от координаты), подставляем в уравнение:
d^2X
------ = G * ( M1*(X1-X)/|X-X1|^3 + M2*(X2-X)/|X-X2|^3 )
dt^2
Далее решаем полученное диф. уравнение любым методом, мне это сейчас лень. В результате получим зависимость положения корабля от времени. Это просто. Проблема в том, что планеты движутся!
|
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
unkAlien : |
В-третьих, это была шутка. Данная задача в общем случае не решена до сих пор, кроме того, вполне возможно, что она вообще не имеет решения в таком виде.
|
Зря сказал. Вдруг он бы решил?
_________________ У меня бисера не доxеpа. |
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
во первых, это не си, а Delphi, во вторых, я сегодня написал подобную прогу. Можно сказать, что эта прога показывает пведение мячиков в космосе с притягательными действиями друг к другу. Можно поставить от 2-х до 1000-чи мячиков. Я не стал делать столкновения мячиков, они просто проходят насквозь друг друга. Но каждый мячик оказывает притяжения на каждый другой мячик. Можно менять размер каждого мячика, с размером меняется его масса и его способности притягать к себе другие мячики.
Меня удивило, что если у всех мячиков поставить начальную скорость по нулям, то все они начинают летать вокруг друг друга и летает это скопление постояно на одном и том же месте, независимо от того какими размерами каждый шарик и где он расположен в начальный момент. Еще я пробовал делать один шарик очень большой, а остальные маленькие. Этот большой шарик постепено смещался в центр и оставался там, немного колеблясь. А остальные шарики крутились вокруг него по элипсоидным траекториям.
Правда я сделал в двумерном измерении, но в трёхмерное нетрудно переделать.
Надеюсь тут всё понятно
a[j]-коэффицент притяженности для каждого шарика
n-количество шариков
for i:=1 to n do begin
for j:=1 to n do begin
if (i<>j) and ((y[i]-y[j])<>0) and ((x[i]-x[j])<>0) then begin
vx[i]:=vx[i]-a[j]*(x[i]-x[j])/sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
vy[i]:=vy[i]-a[j]*(y[i]-y[j])/sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
end;
end;
end;
for i:=1 to n do begin
x[i]:=x[i]+vx[i];
y[i]:=y[i]+vy[i];
end;
Что не понятно, спрашивайте.
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
unkAlien
421 EGP
   Репутация: 36 Сообщения: 860 Откуда: Челябинск Зарегистрирован: 05.06.2004
 |
|
DedMazaj : |
во первых, это не си, а Delphi, во вторых, я сегодня написал подобную прогу. Можно сказать, что эта прога показывает пведение мячиков в космосе с притягательными действиями друг к другу.
|
Поймите, ваше решение не верно. Во-первых, это итерационное, а не точное решение - у вас всегда присутствует некая ошибка в вычислениях, которая постепенно накапливается. Для точного решения надо решить систему дифференциальных уравнений, аналогичных вышеприведённому. Во-вторых, сила притяжения прямо пропорциональна массе объектов и обратно пропорциональна квадрату расстояния между ними - так учит нас учебник физики . В третьих, в реальном мире нет никакого коэффициента притяжённости - его роль исполняет гравитационная постоянная, умноженная на массы объектов.
|
|
|
YogSagot
1175 EGP
  Рейтинг канала: 1(8) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003
 |
|
DedMazaj, все понятно. Я помнится видел именно такую прогу, как ты описал. Там было что-то типа спиралевидных галактик, состоящих из сотен отдельных точек, крутящихся вокруг общего центра. Очень интересно было наблюдать, когда две "галактики" подходят близко друг к другу и начинают притягиватся, от чего их отдельные "звезды" разлетаются во все стороны с большой скоростью и "галактики" теряют свою спиралевидную форму. Это все безусловно очень занятно, но спрашивали тебя совершенно о другом.
Вот смотри. Прогу ты написал интересную, но. Задав начальные параметры своих мячиков на момент запуска программы КАК ты определишь, в каких точках будут находится твои мячики, к примеру, через 10 секунд работы программы? А? Правильно - запустишь программу и подождешь 10 секунд. А тебя спрашивают про некую формулу, которая бы это дело высчитывала и сами же тебе ответили, что такой формулы на данный момент НЕ СУЩЕСТВУЕТ.
Спросишь, а для чего нужна такая формула? А ты во Фронтир играл? Автопилот там помнишь? Так вот. Автопилот там при расчете траектории учитывал притяжение ТОЛЬКО ОДНОГО небесного тела. А именно того, чье притяжение на данный момент является доминирующим. Это пораждало орой проблемы при смене доминирующего тела, к примеру когда приближаешся к карликовому спутнику планеты-гиганта, корабль в момент смены дом. тела могло резко тряхонуть прямо о поверхность, что заканчивалось весьма печально.
Еще примеры, думаю, излишни
|
|
|
DedMazaj
68 EGP
 Репутация: 4 Сообщения: 152 Откуда: Красноярск Зарегистрирован: 25.05.2005
 |
|
unkAlien : |
сила притяжения прямо пропорциональна массе объектов и обратно пропорциональна квадрату расстояния между ними
|
я знаю, что там есть квадрат. Я пытался ставить квадрат в формулу: шарики просто набирали бешеную скорость и разлетались в никуда. Я знаю к чему ведет этот квадрат, он ведет к тому, что чем ближе объект к планете тем на него сильней действует притяжение планеты. А у меня без квадрата притяжение одного шарика на другой действует одинакого с любого расстояния.
YogSagot : |
Спросишь, а для чего нужна такая формула?
|
тут ведь вам не физика, а программирование. Можно использовать ряд формул, а не одну. И еще, как по одной формуле можно посчитать сразу три координаты в пространстве?
Я физику не люблю. Я люблю программирование.
_________________ спасаю зайцев с подбитых космических кораблей |
|
|
YogSagot
1175 EGP
  Рейтинг канала: 1(8) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003
 |
|
DedMazaj : |
Я пытался ставить квадрат в формулу: шарики просто набирали бешеную скорость и разлетались в никуда.
|
Это просто у тебя экран маленький Но лично я писал прогу где тоже было потипу притяжение И там делил произведение "мас" на квадрат расстояния И у меня все получалось, "кораблик" вокруг "планетки" летал по очень красивой элиптической траектории
DedMazaj : |
тут ведь вам не физика, а программирование.
|
Сотри это нафиг, пока это Трайдент или ункАлиен не увидел. Для конфы будет потерей, если пострадает их ментальное или душевное здоровье изза твоего поста!
DedMazaj : |
Можно использовать ряд формул, а не одну.
|
Дык для того, чтобы эту формулу использовать, ее сперва надо вывести Логично, нет?
DedMazaj : |
И еще, как по одной формуле можно посчитать сразу три координаты в пространстве?
|
Тебе говорят о другом. Тебе говорят о том, что от тебя требуют зависимость положения в пространстве от времени
DedMazaj : |
Я физику не люблю. Я люблю программирование.
|
Я тоже физику не люблю. Но вот только если ты программируешь некую симуляцию реальных физических процессов (о чем мы в данный момент и говорим), то ты ОБЯЗАН считатся хотя-бы с школьным учебником за 7-й класс. Грош цена тебе как программисту, если не способен ты переступить через неприязнь к школьной программе.
|
|
|
|
|
|
Канал Игры Мечты: «Вопросы?» |
|