Trasformazione di coordinate: dal "mondo reale" al "mondo virtuale"

 Per riportare graficamente delle rappresentazioni statistiche, Il primo ostacolo che si deve superare per sfruttare a pieno le potenzialità della libreria GDI+  però è riuscire a trasformare le coordinate del “mondo reale”, quindi le coordinate del piano cartesiano, in coordinate del “mondo virtuale”, quindi i pixel. In particolare, si vuole riprodurre la finestra reale all’interno del rettangolo virtuale e si identificano, quindi, le caratteristiche della finestra reale (come minYmaxYminXmaxX) e quelle del rettangolo (ovvero xywh). Nel caso dell’asse delle ascisse, quindi delle coordinate x, il ragionamento è semplice: posto la larghezza del rettangolo virtuale e Left lo scostamento del rettangolo dal lato sinistro, si ottiene la seguente trasformazione:
Invece per le coordinate y si devono fare delle considerazioni: a differenza del “mondo reale”, nel “mondo virtuale” l’origine degli assi è 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. 
dove H indica l’altezza del rettangolo virtuale e Top lo scostamento del rettangolo dall’alto. 
In seguito viene riportato un esempio di codice VB.net con cui si effettua questo tipo di trasformazioni:

Function Xreale_To_Xvirtuale(xReale As Double, minX As Double, maxX As Double, left As Integer, width As Integer) As Integer
    Return CInt(left + width * (xReale - minX) / (maxX - minX))
End Function
 
Function Yreale_To_Yvirtuale(yReale As Double, minY As Double, maxY As Double, top As Integer, heigth As Integer) As Integer
    Return CInt(top + heigth - heigth * (yReale - minY) / (maxY - minY))
End Function

Commenti

Post popolari in questo blog

Alcuni esempi di strategie di trading algoritmico utilizzate

Processi stocastici con mean reversion: Ornstein–Uhlenbeck process, Dixit & Pindyck Model, Vasicek model, etc

La formula di Legendre e la sua utilità nelle applicazioni