Trasformazione di coordinate: dal “mondo reale” al “mondo virtuale”

Uno degli aspetti fondamentali quando si disegna un grafico attraverso C# o VB.NET è il riuscire a trasformare in maniera opportuna le coordinate del dataset che si vuole rappresentare. Infatti, una trasformazione delle coordinate errata può portare dei risultati sbagliati e fuorvianti. La prima cosa che bisogna ricordare è che il sistema richiede le coordinate dei punti in forma di pixel. In particolare, se si vuole riprodurre un certo punto determinato dal valore di due coordinate X e Y sullo schermo, bisognerà ottenere il suo equivalente grafico, dato dalle trasformazioni delle due variabili in coordinate pixel e con riferimento l’origine della bitmap istanziata in precedenza.

Questa trasformazione è di per sé molto semplice, ma richiede molta attenzione in quanto fondamentale per una giusta rappresentazione. Supponendo di avere un dataset in due variabili, X e Y, e supponendo di aver creato una bitmap caratterizzate dalle seguente variabili:

  • Left, ovvero la coordinata X del vertice in alto a sinistra del rettangolo;
  • Top, ovvero la coordinata Y del vertice in alto a sinistra del rettangolo;
  • Width, ovvero l’ampiezza del rettangolo;
  • Height, ovvero l’altezza del rettangolo;

allora occorrerà ottenere una coppia di coordinate, \hat{X} e \hat{Y}, che facciano rifermento alla bitmap, in particolare all’estremo sinistro, di cui possediamo le coordinate. Per ogni punto basterà, quindi, applicare queste trasformazioni:

La X può essere trasformata in maniera tale che ricada all’interno della bitmap. Servirà quindi che il massimo valore delle X sia associato all’estremo destro della bitmap e il minimo all’estremo sinistro, scalando di conseguenza tutti gli altri valori in maniera che risultino compresi tra questi due. Questo è ottenibile, per una generica osservazione i-esima, attraverso la seguente formula:

\hat{x}_i = \mathrm{Left} + \mathrm{Width} \cdot \frac{x_i - min(X)}{max(X)-min(X)}

Analogamente, bisognerà scalare in modo uguale anche le coordinate della Y, ricordando però che la bitmap fornisce un riferimento per l’estremo sinistro superiore, e non, come convenzionalmente è abitudine nel definire l’origine di un grafico, l’estremo sinistro inferiore. La formula risulterà essere la seguente:

\hat{y}_i = \mathrm{Top} +\mathrm{Height} \cdot( 1 - \frac{y_i - min(Y)}{max(Y)-min(Y)})

Lascia un commento