Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
karlosss
Založen: 13. 10. 2009 Příspěvky: 2
|
Zaslal: 13. říjen 2009, 20:16:05 Předmět: Pohyb po mapě |
|
|
Zdravim, vim ze se ted zeptam na otazku ktera je pro vas pravdepodobne trivialni, ale pro me bohuzel predstavuje neresitelny problem. Dejme tomu ze mam nactenou vyskovou mapu a zobrazen teren. Chtel bych se po terenu pohybovat konstantni rychlosti. Ale konstatni rychlosti napriklad 5 m/s, tedy pri pohybu do kopce pujdu stejne rychle jako pri pohybu z kopce nebo po rovine. abych opravdu urazil za 1 sekundu 5 metru po povrchu. pomohl by mi nekdo? |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 14. říjen 2009, 07:11:29 Předmět: |
|
|
Máš dejme tomu půdorysný vektor směru, ve kterém chceš jít. Pak ještě normálu k povrchu. Pomocí kartézských součinů spočítáš tangenciální vektor k povrchu, normalizuješ, a máš skutečný směr pohybu. Alespoň teda do té doby, než se změní sklon povrchu.
PS: Anebo (a to je na pochopení ještě jednodušší, i když méně přesné) si spočítáš výšku bodu, kam by ses dostal normálně. Vezmeš vektor od bodu, kde stojíš, po tento a normalizuješ a je to.
No a pokud ti jde jen o (relativní) rychlost pohybu promítlou do půdorysné roviny, tak vezmeš jen dvě složky normalizovaného vektoru směru pohybu. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 14. říjen 2009, 08:53:51 Předmět: |
|
|
Myslím, že chce 3 složky, aby urazil opravdu 5 metrů za 1 sekundu.
Směr pohybu dostaneš tak, jak psal frca. Ten vektor znormalizuješ a vynásobíš (5 * synchronizační čas). Synchronizační čas je doba zpracování jednoho (předchozího) snímku. Toť v principu vše.
Budou tam ale drobné nepřesnosti (zvlášť při nízkým framerate), ale to už tak chodí :). Mám namysli to, že při nízkých fps ti vektor pohybu vynásobený rychlostí a sync. časem vyjde příliš dlouhý. Dalo by se to zpřesnit nějakým rozdělením tohoto vektoru na menší kousky. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
karlosss
Založen: 13. 10. 2009 Příspěvky: 2
|
Zaslal: 14. říjen 2009, 20:53:24 Předmět: |
|
|
ano, 3 slozky potrebuji.
neslo by to vysvetlit nejak plopate nejlepe vzorecek ? dostali jsme to za ukol a bohuzel mi analytika nic moc nerika. Mam tedy souradnice aktualni pozice a uhel smeru kterym se pohybuju. pak mam souradnice 3 bodů aktualniho trojuhelniku ve kterem se prave nachazim. a nejak se mi to porad nedari spocitat. cas za predchozi snimek mam take. doted jsem pozici pocital jako
xNew = xOld + Math.Sin(uhel) * (rychlost * casovac.getMilisecOdMinule())
a analogicky pro pohyb v ose Y ale to je prave spatne, protoze to je rychlost v te "pudorysne rovine". dekuji |
|
Návrat nahoru |
|
 |
Poky

Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 15. říjen 2009, 07:31:50 Předmět: |
|
|
xNew = xOld + Math.Sin(uhel) * Math.Sin(Theta) * (rychlost * casovac.getMilisecOdMinule());
yNew = yOld + Math.Cos(uhel) * Math.Sin(Theta) * (rychlost * casovac.getMilisecOdMinule());
přižemž Theta je úhel mezi normálou povrchu po kterém se pohybuješ a vektorem pohybu. Z tohoto vzorce ti vyjde, že čím strmější bude povrch, tím méně v půdorysném směru popojdeš.
Jenom drobná rada do života: "Používej jeden jazyk! - Máš smíšenou angličtinu s češtinou a to je děs."  |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 15. říjen 2009, 10:44:02 Předmět: |
|
|
Poky napsal: |
Jenom drobná rada do života: "Používej jeden jazyk! - Máš smíšenou angličtinu s češtinou a to je děs." ;-) |
??? co
Poky: a co zNew? ;-)
takže karloss: máš půdorysný pohyb V (2D vektor v rovině XY, uvažuju že Z je nahoru a tedy 0). Teď otoč ten vektor V o 90stupňů:
V = [-V.y, V.x, 0]
Následně udělej crossproduct Up a V (Up je normála povrchu terénu). Poky odpoustí angličtinu :)
Získáš vektor dopředu V2, ale už nakloněný podle terénu. Znormalizuj to a vynásob rychlostí a tim časem. Hotovo, vyřízeno. Jen po skončení pohybu musíš kvůli nepřesnostem znovu "usadit" pozici na terén.
EDIT: poky: aha! už chápu..tak tu sou aspoň dva způsoby :) _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
Poky

Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 15. říjen 2009, 12:00:40 Předmět: |
|
|
citace: |
citace: |
Poky napsal:
Jenom drobná rada do života: "Používej jeden jazyk! - Máš smíšenou angličtinu s češtinou a to je děs."  |
??? co |
Myšleno tak, aby poučíval jeden jazyk - buď ČJ nebo AJ ale ne oba zároveň, ty rovnice co jsem napsal jsem už nepřepisoval do jednoho jazyka - to jsou ty co už tam měl, jen jsem je upravil. |
|
Návrat nahoru |
|
 |
|