Přejít na obsah


Fotka

URWIGO - jak na to přímo v LUA

wherigo

Nejlepší odpověď mh.mail , 08 leden 2016 - 9:57

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)
Přejít na celý příspěvek


  • Pokud chcete vložit odpověď, přihlašte se
5 odpovědí na toto téma

#1 braun21

braun21

    Advanced Member

  • Members
  • PipPipPip
  • 30 příspěvků(y)

Publikováno 07 leden 2016 - 20:01

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


  • 0

#2 Blexa

Blexa

    Advanced Member

  • Members
  • PipPipPip
  • 850 příspěvků(y)

Publikováno 08 leden 2016 - 6:43

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.


Tento příspěvek byl upraven od Blexa: 08 leden 2016 - 6:49

  • 0

#3 gord

gord

    Advanced Member

  • Members
  • PipPipPip
  • 6 631 příspěvků(y)

Publikováno 08 leden 2016 - 7:03

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.


  • 0

MHD/PID vybranych mest CR jako POI (diskuse)
GeoGet:
- OwnMaintenance - prehled udrzby vlastnich kesi - v1.1.3 (diskuse)
- Combine 2 - automatizace opakovanych cinnosti (diskuse, dávky)
- Spoiler - uložení spoilerů do GPS jako POI (diskuse)

- Stator - statistiky y GeoGetu (diskuse)

- Náhrada GJ legálními postupy

 


#4 nalano

nalano

    Advanced Member

  • Members
  • PipPipPip
  • 135 příspěvků(y)

Publikováno 08 leden 2016 - 8:19

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

#5 mh.mail

mh.mail

    Advanced Member

  • Members
  • PipPipPip
  • 844 příspěvků(y)

Publikováno 08 leden 2016 - 9:57   Nejlepší odpověď

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)

Tento příspěvek byl upraven od mh.mail: 08 leden 2016 - 10:02

  • 2

„Kdo podvádí, ochuzuje jenom sám sebe.“
http://gc.i-mh.net/ | gc@i-mh.net


#6 braun21

braun21

    Advanced Member

  • Members
  • PipPipPip
  • 30 příspěvků(y)

Publikováno 08 leden 2016 - 10:06

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


Tento příspěvek byl upraven od braun21: 11 leden 2016 - 9:04

  • 0





Také označené jedním nebo více z těchto klíčových slov:wherigo

0 uživatel(ů) prochází toto téma

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

Reklama