Creare griglia in figura

di il
3 risposte

Creare griglia in figura

Ciao , mi servirebbe realizzare una griglia 100x100 su una figura e in particolare dovrei riuscire poi a localizzare ogni singola cella. Spiegando un pò meglio, se ad esempio mi trovo nelle coordinate (1,1) dovrei riuscire a localizzare la cella a cui questo punto appartiene (ad esempio cella (1,2) ).
Come potrei procedere?
Grazie

3 Risposte

  • Re: Creare griglia in figura

    Non è chiaro quello che vuoi ottenere.

    Creare una griglia su una figura non è particolarmente difficile, dal punto di vista grafico, ma mi sembra di capire che non è semplicemente questo quello che vuoi.

    Cosa intendi con e ad esempio mi trovo nelle coordinate (1,1) dovrei riuscire a localizzare la cella a cui questo punto appartiene (ad esempio cella (1,2) ).?
  • Re: Creare griglia in figura

    Praticamente io nella figura ho un punto in movimento. Poichè mi servirebbe conoscere quante volte quel punto esplora una determinata area, vorrei costruire questa griglia 100x100 e ogni volta che questo punto si ferma farmi restituire la cella della griglia in cui si è fermato. Non voglio conoscere tutte le celle della griglia che attraversa ma diciamo solo quella iniziale e finale per tutti gli spostamenti che effettua. Con griglia (1,2) intendo farmi restituire “le coordinate” della griglia.

    So come si crea una semplice griglia ma non ho idea di come possa fare per realizzare il resto.
  • Re: Creare griglia in figura

    La cosa più semplice che puoi fare:

    [*] definire la griglia come (bisogna sostituire le chiamate alla funzione "randi" con i valori opportuni):
    
    % Valore minimo della coordinata "x"
    xmin=randi(5)
    % Valore minimo della coordinata "y"
    ymin=randi(5)
    % Numero di celle sull'asse x
    n_cell_x=100
    % Numero di celle sull'asse y
    n_cell_y=100
    % Coordinate X delle celle
    xt=linspace(xmin,xmax,n_cell_x+1)
    % Coordinate Y delle celle
    yt=linspace(ymin,ymax,n_cell_y+1)
    
    Date le coordinate del punto

    [*] trovare, tra le coordinate "x" della griglia, il massimo valore inferiore al valore della coordinata "x" del punto
    [*] trovare, tra le coordinate "Y" della griglia, il massimo valore inferiore al valore della coordinata "y" del punto
    
    % Identificazione massimo valore inferiore al valore della coordinata "x" del punto
    x_idx=max(find(xt <= xp))
    % Identificazione massimo valore inferiore al valore della coordinata "y" del punto
    y_idx=max(find(yt <= yp))
    
    A questo punto, le coordinate della cella all'interno della quale si trova il punto saranno:
    
    cell_x=[xt(x_idx) xt(x_idx+1)]
    cell_y=[yt(y_idx) yt(y_idx+1)]
    
    [*] Numerare idealmente le celle della griglia in modo crescente partendo dalla prima in basso a sinistra e proseguendo lungo le ascisse e poi passando a quelle della seconda riga

    In questo modo avendo una griglia 10 x 10 la cella numero 13 sarà la terza della seconda riga partendo dal basso

    Il numero della cella nella quale si trova il punto sarà
    
    cell_n=n_cell_x*(y_idx-1)+x_idx
    

    Il codice che segue, illustra un esempio completo del codice
    
    xmin=randi(5)
    inc_x=randi(33)
    xmax=xmin+inc_x
    ymin=randi(5)
    inc_y=randi(33)
    ymax=ymin+inc_y
    
    n_cell_x=10
    n_cell_y=10
    xt=linspace(xmin,xmax,n_cell_x+1)
    yt=linspace(ymin,ymax,n_cell_y+1)
    rectangle('position',[xmin ymin inc_x inc_y],'edgecolor','r','linewidth',2)
    hold on
    xlim([xmin*.5 xmax*1.5])
    ylim([ymin*.5 ymax*1.5])
    %grid
    
    for i=1:length(xt)
       plot([xt(i) xt(i)],[ymin ymax],'k')
    end
    for i=1:length(yt)
       plot([xmin xmax],[yt(i) yt(i)],'k')
    end
    
    if(exist('hp'))
       delete(hp)
    end
    
    xp=xmin+rand*inc_x
    yp=ymin+rand*inc_y
    hp=plot(xp,yp,'o','markerfacecolor','k')
    
    x_idx=max(find(xt <= xp))
    y_idx=max(find(yt <= yp))
    
    cell_x=[xt(x_idx) xt(x_idx+1)]
    cell_y=[yt(y_idx) yt(y_idx+1)]
    cell_n=n_cell_x*(y_idx-1)+x_idx
    
Devi accedere o registrarti per scrivere nel forum
3 risposte