|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
ra001 Site Admin
Joined: 20 Jan 2003 Posts: 452 Location: Latvija
|
Posted: Wed Dec 28, 2005 12:07 pm Post subject: Ceļa noteikšana |
|
Labrīt.
Vai kādam nav nojausmas kā aprēķināt īsāko ceļu kuģim K, ar ātrumu V2 nokļūt līdz planētai, kura riņķo ap "sauli" pēc šādas formulas?
Xn=Xs+cos(V1*pi * n)*radius;
Yn=Ys -sin(V1*pi * n)*radius;
Man matemātika galīgi nepadodas... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 28, 2005 1:21 pm Post subject: |
|
Īsākais ceļš, lai nokļūtu līdz planētai, ir līdz tuvākajam punktam uz planētas orbītas. Tb tavā zīmējumā tas būs tas nelielais attālums tieši pa labi līdz tai svītr-punktētajai līnijai. Un tur jāsēž jāgaida, kamēr atnāk planēta. |
|
Back to top |
|
|
ra001 Site Admin
Joined: 20 Jan 2003 Posts: 452 Location: Latvija
|
Posted: Wed Dec 28, 2005 2:07 pm Post subject: |
|
Nē runa jau nav par to, bet par to, lai kuģis braucot pa taisni, nonākot pie planētas orbītas būtu vienlaicīgi ar planētu šai pašā punktā. |
|
Back to top |
|
|
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Wed Dec 28, 2005 3:36 pm Post subject: |
|
manupraat kugja aatrums (V2) vispaar nav vajadziigs, lai noteiktu minimaalo celju - vnk jaaskataas, kuraa laika momentaa (t) planeeta atrodas vistuvaak kugjim un tad peec pitagora jaaapreekjina attaalums (a) no kugja(kurss apreekjina laikaa staav) liidz planeetai laika momentaa, kad taa vistuvaak kugjim.
(ziimeejumaa, tur kur ir Vs, Xs un Ys, tekstaa ir attieciigi Vp, Xp un Yp. mani mulsinaaja taas dzeltenaas planeetas dzeltenaa kraasa, taapeec uzskatiiju to par sauli, kad ziimeeju)
saakumaa planeeta atrodas 0 graadu attieciibaa pret sauli(uz x ass). tad t=0. Vp ir planeetas lenkjiskais aatrums, vai kkas taads (aatrums kaa izmainaas planeetas lenkjis pret sauli(0,0) laikaa t). r ir planeetas attaalums liidz saulei. tad planeetas koordinaatas, ja dod laiku t buus..
Xp(t) = r*cos(Vp*t)
Yp(t) = r*sin(Vp*t)
plus, izmantojot ieguutaas koordinaatas, apreekjinam attaalumu(a) no planeetas liidz kugjim..
a = sqrt( (Xk-Xp(t))^2 + (Yk-Yp(t))^2 )
viss, kas tev jaaizdara, ir, jaatrod taads t, pie kura vismazaakais a (to var izdariit vienkaarshaa ciklinjaa). peec tam vnk virzi kugji uz koordinaataam Xp(t), Yp(t) ar aatrumu a/t, liidz vinss tur sastapsies ar planeetu:D
(ceru, ka straadaas, jo pats tikai uz papiira ziimeeju) |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 28, 2005 5:34 pm Post subject: |
|
zutiic:
Quote: | vnk jaaskataas, kuraa laika momentaa (t) planeeta atrodas vistuvaak kugjim un tad peec pitagora |
A kā lai zin, kurā laika momentā tad būs?
ra001 droši vien grib tieši to jau uzzināt (X2,Y2 koordinātes viņa bildē), lai zinātu uz kurieni braukt ar to kuģi.
Quote: | viss, kas tev jaaizdara, ir, jaatrod taads t, pie kura vismazaakais a (to var izdariit vienkaarshaa ciklinjaa) |
Tā nu gan būtu muļķība. Padomā pats, ja nu tā planēta veic lielu riņķi - tad taču cikls būs ilgs un bremzēs tā visa padarīšana. Te noteikti var analītiski izrēķināt, kurā laika posmā tas būs. Vajag tikai vienādojumu pareizu sastādīt ;)
Man pašlaik labākais kas sanācis ir vienādojums formā: a*sin(xt+y)+b*cos(xt+y)+c=d*t^2 (kur visi tie burti izņemot t ir konstantes)
Kautkā pašam nesanāk atrast t atrisinājumu. Būšu mājās, tad Maple'i parasīšu ;) |
|
Back to top |
|
|
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Wed Dec 28, 2005 7:10 pm Post subject: |
|
oke, nenejm pieree - meeginaaju liidzeet...
ja taa labi padomaa, bubu otrajaa postaa bija daleeja taisniiba.
Quote: | Īsākais ceļš, lai nokļūtu līdz planētai, ir līdz tuvākajam punktam uz planētas orbītas. Tb tavā zīmējumā tas būs tas nelielais attālums tieši pa labi līdz tai svītr-punktētajai līnijai. Un tur jāsēž jāgaida, kamēr atnāk planēta. |
nevajag tikai to "seedeeshanu un gaidiishanu".
Xp = cos( atan2(Yk, Xk) ) * r;
Yp = sin( atan2(Yk, Xk) ) * r;
...kur Xp un Yp - koordinaatas kur kugjim jaanonaak, r - planeetas attaalums liidz saulei, Xk un Yk - kugja saakuma koordinaatas.
laiku, cik ilgi kugis pavadiis celjaa reekinaam shitaa (atnjemam loku garumus un izdalaam ar aatrumu):
t = (2*r/pi) * ( atan2(Yk, Xk) - atan2(Yp0, Xp0) ) / Vp;
// vajag veel panjemt |t|
t = (t>0)? t : -t;
...kur t - laiks, r - planeetas attaalums liidz saulei, Xk un Yk - kugja saakuma koordinaatas, Xp0 un Yp0 - planeetas saakuma kordinaatas, Vp - planeetas aatrums (shitas vairs nav lenkiskais!) |
|
Back to top |
|
|
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Wed Dec 28, 2005 7:21 pm Post subject: |
|
ak jaa, un mazaakais attaalums buus raadiusu starpiiba:
a = r - sqrt( Xk*Xk + Yk*Yk );
par atskaites sisteemas saakumpunktu te visur pienjemams sauli (0,0), ja kas |
|
Back to top |
|
|
ra001 Site Admin
Joined: 20 Jan 2003 Posts: 452 Location: Latvija
|
Posted: Wed Dec 28, 2005 7:45 pm Post subject: |
|
Paga, man nekas nesanāk.
Man kuģim ir konstants ātrums Vk un sākuma koordinātes Xv un Yv
Planēta riņķo ap sauli ar konstantu ātrumu Vp, pa parastu riņķa līniju ar radiusi R.
Man vajag atrast kurā punktā Xx,Yy satiksies planēta un kuģis.
Pašlaik man sanāk tikai tā, ka kuģis "skrien" pakaļ planētai, bet ja sagadās, ka planētas ātrums ir lielāks nekā kuģa ātrums, tad kuģis nekad nenonāk uz šīs nolāpītās planētas...
http://rah.eos.lv/solar1.exe |
|
Back to top |
|
|
zutiic Indago dalībnieks
Joined: 12 Jan 2004 Posts: 140 Location: Rīga
|
Posted: Wed Dec 28, 2005 8:03 pm Post subject: |
|
es nezinu vai gamemakerii ir taa forshaa atan2 f-cija. tad vareetu taa, kaa rakstiiju:
Quote: | Xp = cos( atan2(Yk, Xk) ) * r;
Yp = sin( atan2(Yk, Xk) ) * r;
...kur Xp un Yp - koordinaatas kur kugjim jaanonaak, r - planeetas attaalums liidz saulei, Xk un Yk - kugja saakuma koordinaatas.
|
..un viss notiktos - kugjis pa taisnu trajektoriju (kas, ja tiek pagarinaata, iet cauri saulei) nonaaktu uz planeetas :/
oke, te lai veel bubu domaa.. |
|
Back to top |
|
|
Vecais_Dumais_Laacis Guru
Joined: 29 Jan 2004 Posts: 800
|
Posted: Wed Dec 28, 2005 8:48 pm Post subject: |
|
man sanaak kaukaa taa
pienjemot ka planeeta atrodaas koordinaatees (r,0)
Code: |
cos(t*Vp)=(Xk+Vkx*t)/r
sin(t*Vp)=(Yk+Vky*t)/r
Vk=sqrt(Vkx^2+Vky^2)
Vp - planeetas rotaacijas aatrums
Xk, Yk - kugja saakotneejaas koordinaates
Vk - kugja aatrums
Vkx - kugja aatruma x komponente
Vky - kugja aatruma y komponente
t - laiks
r - rotaacijas raadiuss
|
triis mainiigie - t, Vkx, Vky
triis vienaadojumi - itkaa vajadzeetu buut atrisinaamam
atrisinot vienaadojumu tiks ieguuts laiks un kugja virziens
peec tam elementaari ir atrast x,y koordinaates sadursmei
ne velti NASA smalki meedz izreekjinaat visu pirms suutiit kauko projaam
veel jau var paredzeet (iipashi extreemiem matemaatikjiem) to lai kugjis neietriektos planeetaa bet smuki pietuvotos no aizmugures _________________ ...un ja bites buutu laachi... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 28, 2005 8:54 pm Post subject: |
|
Tu vēl aizmirsi Xs un Ys atņemt no labām pusēm - planētas rotācijas centrs (saule).
Man šis pats sanāk, tikai nemāku atrisināt.. Maple ar nelīdz.
Pie tam, Nasa diez vai k.kuģus sūta pa taisno uz vajadzīgo vietu. Šie jau izmanto planētu gravitācijas, lai iegūtu ātrumus un tad tas ceļš izskatās kā spirālveidīgs. :) |
|
Back to top |
|
|
S1 Indago dalībnieks
Joined: 31 Jul 2005 Posts: 219 Location: Jelgava
|
Posted: Wed Dec 28, 2005 9:39 pm Post subject: |
|
Quote: | Man vajag atrast kurā punktā Xx,Yy satiksies planēta un kuģis.
|
mans risinājums ir nedaudz savāds . Var sastādīt nelielu programiņu ar ciklu, kur katrā ciklā maini planētas ātrumu, līdz attiecīgi abu objektu koord. kautcik sakritīs satikšanās vietā. Vai saprati manu ideju? |
|
Back to top |
|
|
ra001 Site Admin
Joined: 20 Jan 2003 Posts: 452 Location: Latvija
|
Posted: Wed Dec 28, 2005 10:05 pm Post subject: |
|
zutiic wrote: | es nezinu vai gamemakerii ir taa forshaa atan2 f-cija. tad vareetu taa, kaa rakstiiju:
Quote: | Xp = cos( atan2(Yk, Xk) ) * r;
Yp = sin( atan2(Yk, Xk) ) * r;
...kur Xp un Yp - koordinaatas kur kugjim jaanonaak, r - planeetas attaalums liidz saulei, Xk un Yk - kugja saakuma koordinaatas.
|
..un viss notiktos - kugjis pa taisnu trajektoriju (kas, ja tiek pagarinaata, iet cauri saulei) nonaaktu uz planeetas :/
oke, te lai veel bubu domaa.. |
ir tāda pati atan funkcija, kad to izmantoju, kuģis aiznesās pa taisno vienā virzienā netakarīgi no tā atrašanās vietas.
Patiesībā valodai nav noziimes, gamemakeri izmantoji tikai lai ātrāk pārbaudītu rezultātu... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Dec 28, 2005 10:19 pm Post subject: |
|
atan2(Yk, Xk) atgriež leņķi no 0-punkta līdz (Xk,Yk)-punktam. |
|
Back to top |
|
|
Lāčblēdis
Joined: 16 Jan 2005 Posts: 113
|
Posted: Wed Dec 28, 2005 10:20 pm Post subject: |
|
Man sanāca tā, ka, neņemot vērā kļūdu, jāatrod t pēc vienādojuma:
R^2+Kx^2-Ky^2-2RKxcos[VpPI(t+N)]+2RKysin[VpPI(t+N)]=(Vk*t)^2
Nav svarīgi, kurš loceklis ko apzīmē, jo tāpat to nevar izrēķināt.
Es domāju, ka pareizi lika priekšā Zutītis - pārbaudīt dažādus laika momentus t un iegūt t ar mazāko kļūdu. Nav jau jāaprēķina katrs t no nulles līdz bezgalībai, manuprāt, var izmantot intervāla dalīšanas metodi. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|