I linguaggi VB.NEt e C# hanno al loro interno anche una libreria grafica chiamata GDI+ grazie alla quale è possibile realizzare delle rappresentazioni statistiche anche molto elaborate. Il primo ostacolo che si deve superare per sfruttare a pieno le potenzialità di questa libreria però è riuscire a trasformare le coordinate del “mondo reale”, quindi le coordinate del piano cartesiano, in coordinate del “mondo virtuale”, quindi i pixel. per fare ciò si deve operare un riproporzionamento attraverso una trasformazione lineare. la prima cosa da fare è riuscire a capire le dimensioni della finestra reale, perciò si devono conoscere 4 grandezze: Ymin, Ymax, Xmin, Xmax. Nel caso dell’asse delle ascisse, quindi delle coordinate x, il ragionamento è semplice: posto W la larghezza del rettangolo virtuale e L lo scostamento del rettangolo dal lato sinistro, si ottiene la seguente trasformazione:
Per ottenere una formula valida per la seconda coordinata, quindi per le coordinate dell’asse delle ordinate, si devono prima fare delle considerazioni. A differenza del “mondo reale”, nel “mondo virtuale” l’origine degli assi non è il vertice in basso a sinistra, ma il vertice in alto a sinistra. Se non si tenesse conto di questa differenza, si rischierebbe di creare un grafico capovolto; per questo motivo si deve considerare il complemento all’altezza quando si crea la formula per il calcolo delle coordinate y nel mondo virtuale. Posta H l’altezza del rettangolo virtuale, e T lo scostamento del rettangolo dall’alto, si ottiene la seguente formula:
Queste trasformazioni possono essere scritte in VB.NET nel seguente modo:
Function X_RealeTo_X_Virtuale (MinX As Double, MaxX As Double, Left As Integer, X_Reale As Double, Width As Double) As Integer
Return CInt(Left + Width *(X_Reale - MinX)/(MaxX - MinX))
End Function
Function Y_RealeTo_Y_Virtuale (MinY As Double, MaxY As Double, TopAs Integer, Y_Reale As Double, Height As Double) As Integer
Return CInt(Top + Height - Height*(Y_Reale - MinY)/(MaxY - MinY))
End Function
