URWIGO - jak na to přímo v LUA

Ahoj. Už nějakou dobu hledám po fórech odpověď a protože jsem ji nenašel, zeptám se tady.

Je nějak možno v urwigu za pomoci kódu lua zjistit azimut mezi dvěma body?

Souřadnice bodů X,Y znám. Azimut mne zajímá z bodu X na bod Y. Nabízí to lua vůbec? Případně jak?

Moc děkuji za jakoukoli odpověď, která mě posune zase o kousek dál...

Ano. LUA je vseobecny jazyk, takze bych necekal primo implementovanou funkci pro vypocet azimutu, ale potrebne zakladni funkce jsou urcite implementovane.

To pojmenovani X a Y je ponekud nestastne, takze rekneme ze mas body A a B. Z toho mas logicky souradnice Ax, Ay a Bx, By (pripadne Z nechme stranou). Muzes si tak spocitat deltax a deltay (rozdil souradnic x a y). Ted uz staci si to promitnout do jednotkove kruznice a pouzit goniometricke funkce. Jednotkova kruznice se stredem v bode A, ktera prochazi bodem B, prepona je 1 a odvesny jsou deltax a deltay. Z toho ten uhel uz dohromady das. Jen asi budes muset na konci pouzit jeste funkci na prepocet z rad na deg.

Nicmene, treba ma nekdo lepsi reseni...

Edit: Ehm, beru zpet jednotkovou kruznici a preponu 1. To je samozrejme nesmysl, respektive by se musela prepocitat deltax a deltay podle vzdalenosti bodu A a B... Nicmene delku odvesen znas a ze je mezi nima pravy uhel je taky jiste, coz pro vypocet uhlu staci.

No, tohle jednoduche reseni urcite plati v plose, treba i sfericke. Ale jsi si jisty, ze jde pouzit i na geoidu? O tom trochu pochybuji.

Na malé vzdálenosti v našich šířkách to bude fungovat.

d,b = Wherigo.VectorToPoint(zonepoint1,zonepoint2)

zonepoint1 = první bod

zonepoint2 = druhý bod

d = vzdálenost mezi body

b = azimut z bodu 1 do bodu 2

 

Pro oba body musí být vytvořen objekt typu ZonePoint.

 

Takže pokud znáš souřadnice bodů, tak:

zonepoint1 = ZonePoint(50.140488333,14.509121666,0)
zonepoint2 = ZonePoint(50.140488333,14.509121666,0)

Souřadnice musí být ve stupních ve formátu desetinného čísla. Třetí parametr (0) je výška, stačí napsat nulu.

A takhle si můžeš vypočítat vzdálenost a azimut z aktuální pozice hráče k nějakému předmětu nazvanému „Target01“, který má uvedeny souřadnice:

d, b = Wherigo.VectorToPoint(Player.ObjectLocation, Target01.ObjectLocation)

Mockrát dík za rady, hlavně za tu poslední od mhmail.

Hned jak budu u pc, testnu to.

edit 11.1.2016: Šlape jak má...díky