Autore Topic: Indicare direzione punto su bussola  (Letto 495 volte)

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
Indicare direzione punto su bussola
« il: 02 Giugno 2014, 01:18:51 CEST »
0
Nella mia applicazione una delle activity è in sostanza una bussola che mostra il nord, per crearla ho usato 2 immagini, una fissa che mostra le 4 direzioni (nord, sud, est e ovest), l'altra invece è una freccia che ruota indicando sempre il nord.
Ora vorrei poter aggiungere un'altra immagine (un pallino nello specifico) che indichi la direzione del punto verso il quale l'utente si deve dirigere.
Conoscendo infatti sia le coordinate dell'utente sia quelle del punto "obiettivo" posso ricavarmi un angolo che sarà quello da usare per posizione il pallino sulla bussola.

Per capire di cosa sto parlando vi allego un'immagine, nell'immagine la freccia è allineata con il nord ma come detto nella realtà la freccia rossa punta sempre al nord reale mentre l'immagine sottostante rimane fissa. Quello blu rappresenta la direzione del punto da raggiungere che ovviamente si sposterà al muoversi dell'utente.



Non ho idea di come aggiungere l'immagine del pallino. Questa dovrà posizionarsi sopra all'immagine fissa e ruotare rispetto al centro di quest'ultima. Il RelativeLayout usato per definire activity non mo concede la libertà voluta oppure non ho capito come fare.

Mi potete dare qualche consiglio? Grazie.
« Ultima modifica: 02 Giugno 2014, 12:43:18 CEST da array81 »

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Indicare dizione punto su bussola
« Risposta #1 il: 02 Giugno 2014, 11:13:32 CEST »
0
Con il RelativeLayout impostando align parent Top-Left dovresti poter usare il "margin" per posizionare il pallino dove vuoi.
Ovviamente devi calcolarti l'offset tenendo conto della dimensione totale del Layout.

Ciao.

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
Re:Indicare direzione punto su bussola
« Risposta #2 il: 02 Giugno 2014, 12:44:58 CEST »
0
Ti ringrazio, sai anche consigliarmi come ruotare l'immagine. Fino ad ora ho sempre ruotato l'immagine rispetto al suo centro tramite RotateAnimation, ma nel mio caso devo ruotarla rispetto ad un punto esterno all'immagine stessa e corrispondente con il centro dell'immagine fissa.
Grazie.

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Indicare direzione punto su bussola
« Risposta #3 il: 03 Giugno 2014, 09:41:05 CEST »
0
Puoi impostare una matrice di rototraslazione con setImageMatrix
Puoi comporre la matrice componendo postTranslate e postRotate.

Trasli per portare il centro di rotazione al centro dell'immagine
Ruoti
Ritrasli per portare l'immagine dove ti serve...

Cmq, se è per il pallino... farei una cosa più semplice.
Mi calcolarei posX e posY come R*(1+cos(theta)) e R*(1+sin(Theta)) e lo posizionerei lì... senza disturbare matrici di rototraslazione.

Ciao.