-
1. Data: 2012-06-18 22:53:39
Temat: Lot do celu (AI)
Od: "Wojciech \"Spook\" Sura" <s...@s...op.pl>
Hej!
Crosspost na pl.sci.matematyka, pl.sci.fizyka i pl.comp.programming. FUT
na tę ostatnią.
Sądzę, że temat pasuje na wszystkie trzy grupy, jeśli ktoś uważa, iż tak
nie jest, przepraszam za OT. Na pl.sci.matematyka pisałem o tym problemie,
ale w tym poście chcę go uściślić i opisać moje próby rozwiązania.
Zadałem sobie dla zabawy problem do rozwiązania, który wydawał się dosyć
prosty, ale w rezultacie okazał się znacznie trudniejszy, niż mi się na
początku wydawało.
Zaczynamy od tego, że przestrzenią, w której się poruszamy jest
dwuwymiarowa przestrzeń kosmiczna o bardzo uproszczonej fizyce (np. brak
grawitacji; w domyśle, jeśli o którymś prawie tu nie wspominam, to nie
działa ono w tej przestrzeni). Rozpatrujemy statek kosmiczny, którego
fizyka ruchu jest również bardzo uproszczona.
Parametry statku opisane są przez następujący zestaw parametrów:
- Prędkość maksymalna. Statek może przekroczyć prędkość maksymalną tylko
po działaniu siły trzeciej (na przykład na skutek kolizji). Przy pomocy
pokładowych silników jest w stanie co najwyżej osiągnąć prędkość
maksymalną. Jeśli leci szybciej, przy pomocy silników może co najwyżej
zwolnić.
- Przyspieszenie. Ponieważ w locie piszę sobie programik symulujący
opisane środowisko, jednostką przyspieszenia są piksle/s^2.
- Zwrotność wyrażona w stopniach na sekundę. W odróżnieniu od prędkości
stosuję tu jeszcze bardziej uproszczony model, to znaczy nie istnieje
przyspieszenie kątowe. Statek jest w stanie w dowolnej chwili obrócić się
w dowolną stronę - pod warunkiem, że sumarycznie nie przekroczy wartości
swojej zwrotności.
Ruch statku realizowany jest w zadanym czasie (w domyśle, jest to zwykle
jedna sekunda) i podzielony jest na skończoną liczbę kroków, na przykład
100. W każdym z kroków statek ma do dyspozycji ułamek swoich możliwości,
czyli na przykład jeśli jego przyspieszenie wynosi 100px/s^2, to w jednym
kroku może przyspieszyć o 1 px/s^2 (przyspieszenie jest utożsamione z siłą
ciągu silników). Podobnie jest ze zwrotnością, ale oczywiście zasada ta
nie dotyczy prędkości maksymalnej.
Zadanie jest następujące. Mamy dane parametry początkowe, wśród których
znajdują się parametry statku, jego obecne położenie, wektor ruchu oraz
wektor kierunku opisujący, w którą stronę zwrócony jest statek (kierunki
obu wektorów nie muszą się pokrywać). Poza tymi parametrami dany jest
dodatkowo punkt docelowy. Ogólnym celem jest osiągnięcie przez statek
danego punktu w wyznaczonym czasie. Jeśli nie jest to możliwe, statek musi
spróbować dolecieć jak najbliżej wybranego punktu. Uwaga - punkt musi
zostać osiągnięty (w miarę możliwości) po zakończeniu cyklu czasowego,
czyli po sekundzie od rozpoczęcia lotu. Jeśli więc na przykład statek leci
na wprost celu, może okazać się konieczne spowolnienie jego lotu, aby nie
osiągnął celu zbyt szybko.
W czasie każdego ze stu kroków statek ma możliwość podjęcia dwóch decyzji.
Pierwszą z nich jest obrót o pewien kąt ograniczony jego zwrotnością.
Wartość decyzji musi zawrzeć się w zakresie [-1.0, 1.0], gdzie skrajne
wartości odpowiadają, odpowiednio, obrotowi w lewo i w prawo. Drugim jest
zastosowanie silników - i wartość również musi zawrzeć się w takim samym
zakresie. 1.0 oznacza maksymalny ciąg do przodu, -1.0 - maksymalny ciąg
wstecz (hamowanie). Po podjęciu decyzji najpierw zostaje zaaplikowany
obrót, a potem przyspieszenie. W praktyce druga operacja sprowadza się do
dodania do obecnego wektora ruchu wektora o długości równej chwilowemu
przyspieszeniu i skierowanego w stronę, w którą skierowany jest statek.
Celem jest napisanie mechanizmu decydującego, na bazie danych wejściowych,
jakie decyzje dotyczące ruchu statku podjąć w każdym z "kroków".
Żeby nie było, że chcę gotowiec, sam próbowałem rozwiązać ten problem, ale
bez większych rezultatów.
Najpierw pomyślałem o takim rozwiązaniu. Niech StT (Ship-to-target) będzie
wektorem zaczepionym w statku i wskazującym na cel. Jeżeli podzielimy go
na liczbę kroków, która pozostała do końca ruchu, otrzymamy "idealny"
wektor, który w danym ruchu chcielibyśmy osiągnąć, nazwijmy go Dsv
(Destination-step-vector). Teraz dzielimy wektor obecnego ruchu na 100
części (bo podczas każdego kroku statek rusza się o 1/100 wektora ruchu) i
pojedynczą część nazywamy Mv (Movement-vector). Teraz od Dsv odejmujemy Mv
i dostajemy wektor ciągu, który trzeba przyłożyć, aby przekształcić Mv w
Dsv. Następnie obracamy statek w stronę tego wektora, a jeśli jest już
ustawiony we właściwym kierunku, przykładamy ciąg, aby zmodyfikować wektor
ruchu.
Rozwiązanie to działa... do pewnego stopnia. Kłopot polega na tym, że
wektor docelowy zmienia się z każdym ruchem, co w efekcie zwykle powoduje,
że statek zaczyna zataczać kręgo dookoła celu zamiast do niego dolecieć.
Po pierwszej porażce zacząłem się zastanawiać, jak poleciałbym statkiem,
gdybym mógł ręcznie kierować jego kierunkiem i ciągiem i zauważyłem pewną
ciekawą zależność, że moja strategia zależałaby w dużym stopniu od
możliwości statku. Jeśli na przykład miałbym do dyspozycji duże
przyspieszenie, to od razu obrałbym wektor, który skontrowałby ewentualny
ruch w niewłaściwą stronę i jednocześnie kierował statek w stronę celu.
Gdyby przyspieszenie było niewielkie, najpierw poświęciłbym całą moc
silnika na skontrowanie obecnego ruchu (jeśli byłby niewłaściwy), a
dopiero potem skierowałbym statek w stronę celu i próbował do niego
dolecieć. Problem polega na tym, że nie wiem za bardzo, jak włączyć
powyższy fakt w ścieżkę obliczeń.
Zastanawiałem się nad wyrażeniem obecnego ruchu statku jako sumy
składowych X i Y, ale w układzie współrzędnych wyznaczonych przez wektor
wskazujący na cel. Wówczas wiedziałbym dokładnie, jaki ruch muszę
kontrować. Tylko że nie dało mi to zbyt dużo w kontekście podjęcia
właściwej decyzji.
Napisałem w C#/4.0 programik, który umożliwia puszczenie symulacji
jakiegoś rozwiązania, jeśli jest ktoś chętny, to mogę dopisać kilka
komentarzy i udostępnić.
Chętnie wysłucham wszystkich pomysłów :)
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
-
2. Data: 2012-06-19 01:12:07
Temat: Re: Lot do celu (AI)
Od: A.L. <l...@a...com>
On Mon, 18 Jun 2012 22:53:39 +0200, "Wojciech \"Spook\" Sura"
<s...@s...op.pl> wrote:
>Hej!
>
>Crosspost na pl.sci.matematyka, pl.sci.fizyka i pl.comp.programming. FUT
>na tę ostatnią.
>
>Sądzę, że temat pasuje na wszystkie trzy grupy, jeśli ktoś uważa, iż tak
>nie jest, przepraszam za OT. Na pl.sci.matematyka pisałem o tym problemie,
>ale w tym poście chcę go uściślić i opisać moje próby rozwiązania.
>
nei mam czasy teraz odpisywac. na razie sciagnij sobie ksaizke, Steven
M. LaValle, "Planning Algorithms"
http://planning.cs.uiuc.edu/booka4.pdf
Problem nalezy do katergorii "optimal control". Zacznij od rownania
rozniczkowego a nie roznicowego
Napsize pozniej
A.L.
-
3. Data: 2012-06-19 23:27:34
Temat: Re: Lot do celu (AI)
Od: "slawek" <s...@h...pl>
Użytkownik "Wojciech "Spook" Sura" <s...@s...op.pl> napisał w
wiadomości grup dyskusyjnych:op.wf39np1q35fkj7@notebook...
> Zaczynamy od tego, że przestrzenią, w której się poruszamy jest
> dwuwymiarowa przestrzeń kosmiczna o bardzo uproszczonej fizyce (np. brak
> grawitacji; w domyśle, jeśli o którymś prawie tu nie wspominam, to nie
> działa ono w tej przestrzeni). Rozpatrujemy statek kosmiczny, którego
> fizyka ruchu jest również bardzo uproszczona.
Jeżeli nie masz grawitacji, to konsekwentnie nie masz też masy. Jeżeli nie
masz masy, to nie masz też 2 zasady dynamiki. Nie chce mi się tu robić
wykładu OTW, ale niestety nasz świat jest taki jaki jest. I 3 wymiary też
muszą być, inaczej będą problemy.
> - Prędkość maksymalna. Statek może przekroczyć prędkość maksymalną tylko
> po działaniu siły trzeciej (na przykład na skutek kolizji). Przy pomocy
> pokładowych silników jest w stanie co najwyżej osiągnąć prędkość
> maksymalną. Jeśli leci szybciej, przy pomocy silników może co najwyżej
> zwolnić.
Ok. Prędkość graniczna c jest w już w STW. Tylko że... nie da się jej
przekroczyć. Niezależnie od wszystkiego. Chyba że nazywasz się Kirk albo
Picard.
> - Przyspieszenie. Ponieważ w locie piszę sobie programik symulujący
> opisane środowisko, jednostką przyspieszenia są piksle/s^2.
Przyspieszenie jest zdecydowanie przereklamowane. Lepiej opisywać przez pęd
i energię.
> - Zwrotność wyrażona w stopniach na sekundę. W odróżnieniu od prędkości
> stosuję tu jeszcze bardziej uproszczony model, to znaczy nie istnieje
> przyspieszenie kątowe. Statek jest w stanie w dowolnej chwili obrócić się
> w dowolną stronę - pod warunkiem, że sumarycznie nie przekroczy wartości
> swojej zwrotności.
Sorry, ale to tak nie działa. Pędu wzdłuż jednej osi nie da się magicznie
zamienić na pęd wzdłuż innej osi.
> Celem jest napisanie mechanizmu decydującego, na bazie danych wejściowych,
> jakie decyzje dotyczące ruchu statku podjąć w każdym z "kroków".
Ażeby? Nie ogarniam jaki jest sens celu.
> Najpierw pomyślałem o takim rozwiązaniu. Niech StT (Ship-to-target) będzie
> wektorem zaczepionym w statku i wskazującym na cel. Jeżeli podzielimy go
Męczysz. Rozpisz równanie ruchu, weź sobie Octave, użyj lsode.
> Rozwiązanie to działa... do pewnego stopnia. Kłopot polega na tym, że
> wektor docelowy zmienia się z każdym ruchem, co w efekcie zwykle powoduje,
> że statek zaczyna zataczać kręgo dookoła celu zamiast do niego dolecieć.
Moment pędu. Hamuj - to spadniesz na cel.
> Po pierwszej porażce zacząłem się zastanawiać, jak poleciałbym statkiem,
> gdybym mógł ręcznie kierować jego kierunkiem i ciągiem i zauważyłem pewną
Na 99% zrobiłbyś półpętlę z dwubeczką i... straciwszy paliwo poleciał w
Kosmos.
> Chętnie wysłucham wszystkich pomysłów :)
Przeczytaj jakiś podręcznik mechaniki teoretycznej. Ze zrozumieniem i
szczególnym zwróceniem uwagi na chaos dynamiczny.
-
4. Data: 2012-06-19 23:42:06
Temat: Re: Lot do celu (AI)
Od: bartekltg <b...@g...com>
W dniu 2012-06-19 23:27, slawek pisze:
>
> Użytkownik "Wojciech "Spook" Sura" <s...@s...op.pl> napisał w
> wiadomości grup dyskusyjnych:op.wf39np1q35fkj7@notebook...
>> Zaczynamy od tego, że przestrzenią, w której się poruszamy jest
>> dwuwymiarowa przestrzeń kosmiczna o bardzo uproszczonej fizyce (np. brak
>> grawitacji; w domyśle, jeśli o którymś prawie tu nie wspominam, to nie
>> działa ono w tej przestrzeni). Rozpatrujemy statek kosmiczny, którego
>> fizyka ruchu jest również bardzo uproszczona.
>
> Jeżeli nie masz grawitacji, to konsekwentnie nie masz też masy.
Bzdura. Płaski wszechświat ("żadnej grawitacji", krzywizny)
jest poprawnym rozwiązaniem równań einsteina. A nawet
rozwiązaniem ewolucji wszechświata.
> nie masz masy, to nie masz też 2 zasady dynamiki. Nie chce mi się tu
> robić wykładu OTW, ale niestety nasz świat jest taki jaki jest.
To jak nie wiesz, to nie rób;)
>> - Prędkość maksymalna. Statek może przekroczyć prędkość maksymalną tylko
>> po działaniu siły trzeciej (na przykład na skutek kolizji). Przy pomocy
>> pokładowych silników jest w stanie co najwyżej osiągnąć prędkość
>> maksymalną. Jeśli leci szybciej, przy pomocy silników może co najwyżej
>> zwolnić.
>
> Ok. Prędkość graniczna c jest w już w STW.
Ale to zupełnie inny rodzaj prędkości granicznej.
Różny od naszego przypadku choćby związkiem ciągu z przyspieszeniem!
Gość chce Galileusza.
> Przyspieszenie jest zdecydowanie przereklamowane. Lepiej opisywać przez
> pęd i energię.
Pędem możesz zastąpić prędkość.
A jak będziesz sobie różniczkował po czasie, to wyjdzie siła.
prędkość, przyspieszenie, mnozymy przez masę i mamy
pęd, siłę;) Oczywiście klasycznie.
>
>> - Zwrotność wyrażona w stopniach na sekundę. W odróżnieniu od prędkości
>> stosuję tu jeszcze bardziej uproszczony model, to znaczy nie istnieje
>> przyspieszenie kątowe. Statek jest w stanie w dowolnej chwili obrócić się
>> w dowolną stronę - pod warunkiem, że sumarycznie nie przekroczy wartości
>> swojej zwrotności.
>
> Sorry, ale to tak nie działa. Pędu wzdłuż jednej osi nie da się
> magicznie zamienić na pęd wzdłuż innej osi.
Nie rozumiesz. Statek się przekręca, aby silnik był inaczej
skierowany. Wektora prędkości to nie zmienia.
Zresztą, wtedy problem byłby trywialny.
>> Celem jest napisanie mechanizmu decydującego, na bazie danych
>> wejściowych,
>> jakie decyzje dotyczące ruchu statku podjąć w każdym z "kroków".
>
> Ażeby? Nie ogarniam jaki jest sens celu.
>
>> Najpierw pomyślałem o takim rozwiązaniu. Niech StT (Ship-to-target)
>> będzie
>> wektorem zaczepionym w statku i wskazującym na cel. Jeżeli podzielimy go
>
> Męczysz. Rozpisz równanie ruchu, weź sobie Octave, użyj lsode.
1) To nie jest równanie rózniczkowe, a różnicowe. (ale jak wspomina
A.L. warto od tego zacząć).
2) rozwiąże rownanie i co? Bez liźnięcia teorii sterowania
się nie obejdzie (są to rzeczy do wymyślenia, ale szybciej
przeczytać).
> Przeczytaj jakiś podręcznik mechaniki teoretycznej. Ze zrozumieniem i
> szczególnym zwróceniem uwagi na chaos dynamiczny.
I mechaniki kwantowej. Nie zapominajmy o kwantowej nieoznaczoności
rakiety w symulowanej gierce;)
pzdr
bartekltg
-
5. Data: 2012-06-21 13:45:59
Temat: Re: Lot do celu (AI)
Od: "$tipa" <s...@w...pl>
Jest juz pozno, wiec byc moze pisze bzdury
Ruch rakiety jest złożeniem dwu niezaleznych ruchów: jednostajnego
prostoliniowego wynikającego z prędkości początkowej i zmiennego
wynikajacego z dzialania sinikow.
skoro masz polozenie i predkosc poczatkowa, to latwo obliczysz, dokad
dolecisz, jesli nic nie zrobisz. Z tego punktu prowadzisz wektor do
celu. Zaczepiasz ten wektor na rakiecie i obliczasz, jak powinienes
dzialac silnikami, by nieruchoma rakieta ustawiona w zadanym kierunku po
sekundzie dotarla do celu. Czyli problem sprowadza sie do obliczen dla
rakiety początkowo nieruchomej.
Jak widac rakieta powina miec odpowiednio niska zwrotnosc i
przyspieszenie maksymalne, bo jesli beda wysokie, to za kazdym razem
wystarczy najpierw ustawic rakiete w zadanym kierunku, a nastepnie
wlaczyc okreslone stale przyspieszenie. W tym przypadku problem jest
wiec banalny.
Jesli zas obie wielkosci beda male, to przyspieszenie i obrot musza od
poczatku ze soba wspoldzialac. No tak, tylko ze wtedy juz po pierwszej
iteracji mamy znowu rakiete ruchoma ktorej problem mozna znowu
sprowadzic do rakiety nieruchomej. Ale mętlik.
Ale zalozmy ze mamy na poczatku te ruchoma rakiete. Znamy jej kierunek i
predkosc. Przechodzimy jak powyzej do ukladu z nieruchoma rakieta.
widzimy w ktora strone nalezy rakiete obrocic. jesli po obrocie rakieta
jest skierowana OD celu (tego wirtualnego - dla nieruchomej rakiety)
dajemy jej przyspieszenie ujemne, jesli prostopadle do celu - nie
przyspieszamy, jeśłi DO celu - dajemy przyspieszenie dodatnie.
wykonujemy obliczenia, przechodzimy spowrotem do poczatkowego ukladu, w
ktorym rakieta jest ruchoma i po wykonaniu tej iteracji mamy nowe
poczatkowe wartosci polozenia, predkosci i kierunku rakiety. Tyle tylko
że czasu mamy trochę mniej.
Coś mi sie widzi, ze w ten sposob rakieta dotrze do celu po spirali.
Tylko czy ktos rozumie, o co mi chodzi? Bo wcale nie jest powiedziane,
ze jasno wyjasnilem moje idee.
$tipa
-
6. Data: 2012-06-21 16:22:54
Temat: Re: Lot do celu (AI)
Od: A.L. <l...@a...com>
On Thu, 21 Jun 2012 13:45:59 +0200, "$tipa" <s...@w...pl>
wrote:
>Coś mi sie widzi, ze w ten sposob rakieta dotrze do celu po spirali.
>Tylko czy ktos rozumie, o co mi chodzi? Bo wcale nie jest powiedziane,
>ze jasno wyjasnilem moje idee.
>
>$tipa
Nie. Ja (po glebszych studiach) nie rozumiem o co Oryginalnemu
Posterowi chodzi
A.L.
-
7. Data: 2012-06-21 16:29:18
Temat: Re: Lot do celu (AI)
Od: "Wojciech \"Spook\" Sura" <s...@o...pl>
Dnia 21-06-2012 o 16:22:54 A.L. <l...@a...com> napisał(a):
> On Thu, 21 Jun 2012 13:45:59 +0200, "$tipa" <s...@w...pl>
> wrote:
>
>> Coś mi sie widzi, ze w ten sposob rakieta dotrze do celu po spirali.
>> Tylko czy ktos rozumie, o co mi chodzi? Bo wcale nie jest powiedziane,
>> ze jasno wyjasnilem moje idee.
>>
>> $tipa
>
> Nie. Ja (po glebszych studiach) nie rozumiem o co Oryginalnemu
> Posterowi chodzi
No to sprecyzuj, czego nie rozumiesz, chętnie odpowiem :)
> A.L.
Pozdrawiam -- Spook.
--
Używam klienta poczty Opera Mail: http://www.opera.com/mail/
-
8. Data: 2012-06-21 19:37:18
Temat: Re: Lot do celu (AI)
Od: A.L. <l...@a...com>
On Thu, 21 Jun 2012 16:29:18 +0200, "Wojciech \"Spook\" Sura"
<s...@o...pl> wrote:
>Dnia 21-06-2012 o 16:22:54 A.L. <l...@a...com> napisał(a):
>
>> On Thu, 21 Jun 2012 13:45:59 +0200, "$tipa" <s...@w...pl>
>> wrote:
>>
>>> Coś mi sie widzi, ze w ten sposob rakieta dotrze do celu po spirali.
>>> Tylko czy ktos rozumie, o co mi chodzi? Bo wcale nie jest powiedziane,
>>> ze jasno wyjasnilem moje idee.
>>>
>>> $tipa
>>
>> Nie. Ja (po glebszych studiach) nie rozumiem o co Oryginalnemu
>> Posterowi chodzi
>
>No to sprecyzuj, czego nie rozumiesz, chętnie odpowiem :)
>
>> A.L.
>
>Pozdrawiam -- Spook.
Nastepujace wydaje mi sie niezrozumiale:
"Parametry statku opisane są przez następujący zestaw parametrów:
- Prędkość maksymalna. Statek może przekroczyć prędkość maksymalną
tylko po działaniu siły trzeciej (na przykład na skutek kolizji). Przy
pomocy pokładowych silników jest w stanie co najwyżej osiągnąć
prędkość maksymalną. Jeśli leci szybciej, przy pomocy silników może co
najwyżej zwolnić."
No to jak to wlasciwie jest? Pod wplywem CZEGO statek przyspiesza a
pod wplywem CZAEGO opoznia? Co powoduje ze statek nie pzrekroczy
predkosci maksynalnej? Silniki mu sie wylacza gdy osiagnie predkosc
maksymalna? czy statek ma mase? Czy ma silniki? Jak dzialaja silniki?
Czy moga napedzac ("odrzut" do tylu) czy mozna hamowac ("odrzut" do
przodu)?
"Zwrotność wyrażona w stopniach na sekundę. W odróżnieniu od prędkości
stosuję tu jeszcze bardziej uproszczony model, to znaczy nie istnieje
przyspieszenie kątowe. Statek jest w stanie w dowolnej chwili obrócić
się w dowolną stronę - pod warunkiem, że sumarycznie nie przekroczy
wartości swojej zwrotności..."
Co to znaczy? Czy obrot zajmuje czas? Co to znaczy "sumarycznie nie
przekroczy"?... "sumarycznie"?.. czego "sumarycznie"?...
A.L.
-
9. Data: 2012-06-21 22:43:11
Temat: Re: Lot do celu (AI)
Od: "Wojciech \"Spook\" Sura" <s...@s...op.pl>
W dniu 21.06.2012 o 19:37 A.L. <l...@a...com> pisze:
> Nastepujace wydaje mi sie niezrozumiale:
Spieszę rozwiać wątpliwości.
> "Parametry statku opisane są przez następujący zestaw parametrów:
> - Prędkość maksymalna. Statek może przekroczyć prędkość maksymalną
> tylko po działaniu siły trzeciej (na przykład na skutek kolizji). Przy
> pomocy pokładowych silników jest w stanie co najwyżej osiągnąć
> prędkość maksymalną. Jeśli leci szybciej, przy pomocy silników może co
> najwyżej zwolnić."
>
> No to jak to wlasciwie jest? Pod wplywem CZEGO statek przyspiesza a
> pod wplywem CZAEGO opoznia? Co powoduje ze statek nie pzrekroczy
> predkosci maksynalnej? Silniki mu sie wylacza gdy osiagnie predkosc
> maksymalna? czy statek ma mase? Czy ma silniki? Jak dzialaja silniki?
> Czy moga napedzac ("odrzut" do tylu) czy mozna hamowac ("odrzut" do
> przodu)?
Po kolei. Przyjmijmy na potrzeby chwili, że parametrem statku jest
przyspieszenie 100 px/s^2 oraz że jednosekundowy ruch dzielony jest na 100
kroków. Przyspieszenie jest parametrem, który opisuje moc silników.
W każdym kroku statek może wykorzystać 1/100 swojego przyspieszenia. W
praktyce w każdym kroku do wektora prędkości (ruchu) może dodać wektor
skierowany w tę samą stronę, w którą skierowany jest statek o długości nie
przekraczającej 1/100 swojego przyspieszenia. Jeśli na początku statek
jest nieruchomy i w każdym kroku wykorzysta 1/100 swojego "przyspieszenia"
nie obracając się, to po 100 krokach (czyli po sekundzie) osiągnie
prędkość 100 px/s. Analogicznie w danym kroku może wykorzystać silniki
hamujące, czyli do wektora ruchu dodać wektor skierowany w przeciwną
stronę niż skierowany jest statek.
Statek nie ma formalnie ustalonej masy, problemy związane z jego
rozpędzaniem i hamowaniem uwzględnione są w parametrze przyspieszenia.
Myśliwiec może mieć przyspieszenie 100 px/s^2, krążownik - na przykład -
10.
> "Zwrotność wyrażona w stopniach na sekundę. W odróżnieniu od prędkości
> stosuję tu jeszcze bardziej uproszczony model, to znaczy nie istnieje
> przyspieszenie kątowe. Statek jest w stanie w dowolnej chwili obrócić
> się w dowolną stronę - pod warunkiem, że sumarycznie nie przekroczy
> wartości swojej zwrotności..."
>
> Co to znaczy? Czy obrot zajmuje czas? Co to znaczy "sumarycznie nie
> przekroczy"?... "sumarycznie"?.. czego "sumarycznie"?...
Obrót zajmuje czas. Ograniczenie dotyczące sumarycznego obrotu odnosi się
znów do kroków, na które podzielony jest cały ruch. Jeśli statek ma
"zwrotność" 90 stopni na sekundę, to w każdym kroku może wykonać obrót o
nie więcej niż 0.9 stopnia w jedną, bądź w drugą stronę. Brak
przyspieszenia kątowego oznacza, że statek ma pełną dowolność w
wykonywaniu obrotów i po obrocie w lewo może natychmiast zacząć obracać
się w prawo, przy czym sumarycznie wszystkie obroty wykonywane w małych
krokach nie mogą przekroczyć wartości jego zwrotności.
Czy teraz jest jaśniej? :)
> A.L.
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
-
10. Data: 2012-06-21 22:59:16
Temat: Re: Lot do celu (AI)
Od: Przemek O <p...@o...eu>
W dniu 2012-06-21 22:43, Wojciech "Spook" Sura pisze:
> W dniu 21.06.2012 o 19:37 A.L. <l...@a...com> pisze:
>> Nastepujace wydaje mi sie niezrozumiale:
>
> Spieszę rozwiać wątpliwości.
Jakbyś napisał zamiast "statek kosmiczny" po prostu "pixel" albo
"obiekt" to może by się "profesory" połapali o co Ci chodzi, a tak,
zaraz będziesz miał wykład o teorii kwantowej, sterowaniu promów
kosmicznych, budowie silników, o nierealnych założeniach, błędach
koncepcji itd itp. :/ IMHO.
pozdrawiam,
Przemek O.