Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Assi cartesiani di una PaintBox (Graphics)
Forum - C# / VB.NET - [VB.NET] Assi cartesiani di una PaintBox (Graphics)

Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 13:55
Sabato, 04/12/2010
Salve a tutti.
Vorrei portare il sistema cartesiano che utilizza la libreria Graphics da quello di default:
                             _ _ _ _ _ _ _ _ _ _ > X
                             |
                             |
                             |
                             |
                             |
                             Y

a quello che solitamente si usa in matematica (considerando però solo il primo quadrante):

                             Y
                             ^
                             |
                             |
                             |
                             |
                             |
                             |_______________> X

Purtroppo, attraverso una traslazione e una rotazione, sono riuscito ad ottenere sì quest'ultima conformazione, ma con la X e la Y scambiate.
E' possibile effettuare una sorta di ribaltamento? Come si può risolvere?

Grazie in anticipo!

Ultima modifica effettuata da a_butta il 04/12/2010 alle 13:59


PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 14:21
Domenica, 05/12/2010
Y = PictureBox.Height - y + y0
y è lo spostamento rispetto al vertice superiore sinistro del controllo (ossia la coordinata y di default). y0 è la distanza dell'origine dal bordo inferiore del controllo.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 9:28
Lunedì, 06/12/2010
Beh, se vuoi rappresentare il sistema con le matrici diventa:
Codice sorgente - presumibilmente Plain Text

  1. p è l'altezza della picturebox
  2. |X| = |1  0||x| + | 0  |
  3. |Y|   |0 -1||y|   |p+y0|


Se leggi questa pagina di documentazione:
http://msdn.microsoft.com/en-us/library/8667dchf.aspx
vedrai come impostare la matrice di trasformazione:
Codice sorgente - presumibilmente Plain Text

  1. 1 0  0
  2. 0 -1 0
  3. 0 (p+y0) 1


Ultima modifica effettuata da Il Totem il 06/12/2010 alle 9:30


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 17:14
Domenica, 05/12/2010
Testo quotato

Postato originariamente da Il Totem:

Y = PictureBox.Height - y + y0
y è lo spostamento rispetto al vertice superiore sinistro del controllo (ossia la coordinata y di default). y0 è la distanza dell'origine dal bordo inferiore del controllo.



Grazie per la risposta. Però quello che volevo fare io (in effetti non mi sono espresso bene), non è tanto impostare la mia Y di volta in volta in base al sistema che sto utilizzando. Io vorrei impostare la matrice degli assi su cui lavora la libreria nel modo che ho detto, di modo che ogni volta che io devo rappresentare una funzione come Y=2X+3 essa mi viene rappresentata tale senza dover operare trasformazioni sulle Y e sulle X... mi sono spiegato?


PM