Tenere traccia del livello di esplorazione

di il
1 risposte

Tenere traccia del livello di esplorazione

Buongiorno, mi servirebbe tenere traccia delle zone più esplorate tra quelle nella figura. Spiego brevemente come ottengo queste zone colorate: Ho tre entità che si muovono in questo spazio e ad ogni posizione che esse assumono viene visualizzato attraverso polyshape il quadrato centrato nell'entità. Poiché dovrei fare in modo che se due tra queste tre entità si trovano in una zona "più colorata" ( = più visitata) possano modificare la loro posizione secondo delle regole che dovrò implementare, mi sapreste consigliare come posso dire a un punto che si trova in una zona tanto esplorata?
Allego file per farvi capire meglio il mio problema.
Allegati:
24220_0fea0e7808e811ef958e2462a5e905ec.png
24220_0fea0e7808e811ef958e2462a5e905ec.png

1 Risposte

  • Re: Tenere traccia del livello di esplorazione

    Dal momento che non hai pubblicato il codice o, almeno la parte rilevante, si può solo provare a dare delle indicazioni di massima.
    Molto dipende da come crei i le aree e come memorizzi le loro posizioni (coordinate).
    Non è chiaro, ad esempio, come gestisci la creazione dei vari quadrati: li crei sempre, anche se un'entità si trova già all'interno di un quadrato creato in precedenza?

    Immagino che tu abbia un loop principale e, ad ogni iterazione costruisci un quadrato per ognuna delle entità.
    Immagino anche che le coordinate dei vari quadrati vengano memorizzate in una matrice (se non è così dovresti farlo).
    La cosa più semplice che puoi fare è, dopo aver calcolato la posizione dell

    A questo punto, ad ogni iterazione potresti verificare se / quante entità siano all'interno dei vari quadrati usando la funzione "inpolygon" alle quale passi le coordinate dell'entità e, in un loop, quelle dei quadrati che hai, via via creato.
    Potresti, quindi creare un vettore con questa "regola": ogni elemento del vettore corrisponde, nell'ordine. ad uno dei quadrati che hai creato.
    In questo modo il primo elemento corrisponderà al primo quadrato, il secondo al secondo e così via (se hai memorizzato le coordinate dei vari quadrati in una matrice, ogni elemento corrisponderà, nell'ordine, ad una riga (o colonna) della matrice.

    Se la i-esima entità si trova all'interno di uno dei quadrati, la funzione inpolygon ti restituirà il valore "logical " 1, con un "if" puoi intercettare questo fatto ed incrementare di una una unità il valore del corrispondente elemento del vettore.
Devi accedere o registrarti per scrivere nel forum
1 risposte