Newsgroup: it.comp.lang.visual-basic
Titolo: Grafica

Ciao a tutti,
se sono OT ditemelo pure ed eventualmente vogliate
dirmi su quale NG dirigermi....grazie.
Il mio problema e' il seguente:
In archivio ho le corrdinate, espresse in metri,
di un disegno disposto nel campo X,Y come riportato
        ^ Y
        | __________
        | | Disegno
        | |_________
       -|-----------> X
        |
 Es:    xmin= 2 m  ymin= -1 m
 xmax=13 m  ymax= 16 m
 dx=11 m    dy=17 m
RAPPRESENTAZIONE GRAFICA:
Su form1 inserisco una picturebox
pic1.top=form1.height *.1
pic1.height=form1.height *.8
pic1.left=form1.width*.1
pic1.width=form1.width*.8
pic1.scaletop=ymin-dy*.1
pic1.scaleheight=dy*1.2
pic1.scaleleft=xmin-dx*.1
pic1.scalewidth=dx*1.2
la maggiorazione mi consente un
bordo libero da disegno
nell'inserire i valori delle
coordinate provenienti da archivio
per avere la giusta visione
devo considerare 2 fattori di scala
e 2 quantità aggiuntive di traslazione
.... mi sto impallando e non
riesco a definirli!!!!
per avere la verifica
provo a disegnare una riquadratura
al centro della fascia
perimetrale libera
avente i punti diagonali
x1=xmin-dx*.05
y1=ymin-dy*.05
x2=xmax+dx*.15
y2=ymin+dy*.15
Questa mi potrà servire come riquadratura
del disegno.
Prima di provare devo risolvere
il problema dell'orientamento
dell'asse y  che in grafica è
diretto verso il basso,
....come posso risolvere il tutto??
grazie dell'aiuto
Antonio

 ....come posso risolvere il tutto??
Di getto: imposta una costante ordMax = massimo valore
della ordinata, poi tutti i valori di ordinata esprimili nella
forma ordMax - (espressione delle ordinate); questo
fa sě che il disegno venga "capovolto".
Per i fattori di scala e di traslazione, crea altrettante costanti:
xScaleFactor
yScaleFactor
xTranslation
yTranslation
e riscrivi tutte le coordinate cosě:
x = (espressione ascissa) * xScaleFactor + xTranslation
y = ordMax - (espressione ordinata) * yScaleFactor + yTranslation
--
Er Roscio.

 di un disegno disposto nel campo X,Y come riportato
Bella storia! :) Ci ho combattuto per tanto tempo! Ma poi ho vinto io! ;)
Per l'asse delle ascisse non dovresti avere problemi, tranne la doverosa
richiesta di riscalare l'immagine in modo che entri nel tuo picturebox.
Questo lo puoi ottenere con una semplice proporzione oppure riscalando in
maniera opportuna i dati. Per i miei dati sperimentali ho semplicemente
ottenuto la spaziatura con
With spTraDati
    .Zz = frmMain.pctSisma(0).ScaleWidth / (pEnd.Zz - (pStart.Zz - 1))
    .Ns = frmMain.pctSisma(1).ScaleWidth / (pEnd.Ns - (pStart.Ns - 1))
    .Ew = frmMain.pctSisma(2).ScaleWidth / (pEnd.Ew - (pStart.Ew - 1))
End With
in questa maniera anche quando vado a graficare un numero di dati inferiore
al count totale, mi basta stabilire il primo (pStart) e l'ultimo (pEnd)
punto (se si esegue uno zoom la routine sara' notevolmente diversa, pero'!).
Per quanto riguarda le ordinate, il problema da risolvere non e' altrettanto
semplice.
In primo luogo dovrai moltiplicare per (-1) ogni singolo dato. Se questi non
sono centrati rispetto allo zero, dovrai aggiungere la media di tutto il set
di dati. Se poi li vuoi graficare rispetto al centro del picturebox, dovrai
aggiungere anche la meta' di picturebox.scaleheight. Alla fine dovresti
ottenere qualcosa di questo genere:
((Media - Dato(i)) * FattScala) + picbox.scaleheight
dove FattScala e' un fattore di scala necessario per far entrare tutti i
dati all'interno del picturebox. Se i dati hanno sempre gli stessi valori
per il massimo ed il minimo, bastera' una costante, altrimenti ti dovrai
scrivere una funzione apposita.
Ultimo consiglio, spassionato: creati DUE array di dati, uno con i dati
"reali" ed un altro con i dati "immagine", che vengono graficati sul
picturebox, ti risolverai una quantita' di problemi!!!! Giuro! :)
Ciao,
- SonicBoom -

OK  Grazie
Tommaso


 wrote in message
_umH8.4810$KG6....@twister2.libero.it...


> grazie , se avrň ancora bisogno , potrň scomodarti?
you're welcome! :)
- SonicBoom -