eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Lot do celu (AI)
Ilość wypowiedzi w tym wątku: 21

  • 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.

strony : [ 1 ] . 2 . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: