.[ ČeskéHry.cz ].
Pohyb po mapě

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
karlosss



Založen: 13. 10. 2009
Příspěvky: 2

PříspěvekZaslal: 13. říjen 2009, 20:16:05    Předmět: Pohyb po mapě Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 14. říjen 2009, 07:11:29    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 14. říjen 2009, 08:53:51    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
karlosss



Založen: 13. 10. 2009
Příspěvky: 2

PříspěvekZaslal: 14. říjen 2009, 20:53:24    Předmět: Odpovědět s citátem

ano, 3 slozky potrebuji.

neslo by to vysvetlit nejak plopate nejlepe vzorecek Smile? 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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 15. říjen 2009, 07:31:50    Předmět: Odpovědět s citátem

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." Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 15. říjen 2009, 10:44:02    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 15. říjen 2009, 12:00:40    Předmět: Odpovědět s citátem

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." Wink

??? 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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna