VB.NET disegnare parabola nel piano cartesiano

giovedì 19 febbraio 2009 - 18.50

nabbopazzo Profilo | Newbie

Salve a tutti!
Avrei un problemino, dovrei fare in modo di disegnare una parabola data un'equazione (che sia y= o x=) nel piano cartesiano.
In vb 6 c sn riuscito grazie al metodo Scale col quale potevo centrare l'origine modificando il sistema di coordinate dell'oggetto picturebox, ma nel 2008 ho potuto notare che è cambiato e non so come fare!
Qualcuno può aiutarmi a impostare gli assi in modo che siano centrati e se possibile determinare come punto di coordinate (0;0) il centro dei due assi in vb 2008??

alexmed Profilo | Guru

Ciao

Spero che le righe che seguono ti possano chiarire un pò l'argomento


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Fammi sapere

Ciao

alexmed

nabbopazzo Profilo | Newbie

Grazie mi ha aiutato però c'è una cosa che nn riesco proprio a capire...forse perchè con la matematica non vado assolutamente d'accordo o sarà perchè non sono abituato a usare la grafica in vb
Ma se dall'equazione della parabola ottengo coordinate y più elevate o più basse della soglia del picturebox (per esempio se ho un picturebox alto 300 e ho y=900) come faccio a proporzionare la y al valore massimo permesso dal mio oggetto??

alexmed Profilo | Guru

Ciao
Semplice (a parole ):
Prima risolvi la tua equazione della parabola.
Cerchi il valore più elevato
Crei una fattore di scala (Valore più elevato / Altezza o Larghezza del Form)
Dopodichè dividi anche gli altri valori per questo fattore in modo da proporzionare il tutto.

Sicuramente più facile a dirsi che a farsi ... ma la strada potrebbe essere questa.

Ciao

alexmed

nabbopazzo Profilo | Newbie

Scusa se sto esagerando ma davvero la cosa nn mi riesce, la parabola la disegno ma ha sempre la stessa larghezza e non rispetta bene l'ordinata all'origine ti posto il codice e se hai tempo e/o voglia mi potresti dire dove sbaglio

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

alexmed Profilo | Guru

Ciao
Ho tralasciato il tuo codice perchè oltre a mancarmi dei dati (a,b,c) ci sono dei dati che non capisco (xmax = 249, xmin = -249).

Allora ti passo una procedura per disegnare un ellisse che sia sempre al centro della PictureBox e che rimane sempre proporzionato alle dimensioni della Picture stessa


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Inoltre mi sono ricordato che mediante

e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(oriX, oriY)

Puoi appunto traslare l'origine e quindi il codice sopra diventerebbe

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


>Scusa se sto esagerando
Vai tranquillo!! Esagera

Ciao


alexmed

nabbopazzo Profilo | Newbie

Ok grazie mille c sn riuscito
Adesso dovrei chiederti un'ultima cosa se ne sei capace... siccome ovviamente eseguendo la procedura di disegno, considerando ogni punto come ellisse di altezza e larghezza 1 il processo è lento e oltre a nn rispondere più il programma, ogni tanto inspiegabilmente si blocca windows e mi tocca resettare il pc, per cuivorrei creare un thread separato.
Ho provato col background worker ma essendo un evento separato nn posso chiamare gli eventi di disegno.
Ho letto che c'è un altro modo per eseguire codice su un thread dedicato però nn ho la più pallida idea di come si faccia.
Se mi fai un esempio che sia simile al mio caso come gentilmente hai fatto precedentemente te ne sarei immensamente grato

alexmed Profilo | Guru

Ciao
Scusa se ti rispondo solo ora.
In effetti non ho molta dimestichezza con i Threads, anche se dubito che il problema sia quello.
Ti consiglio comunque di aprire un nuovo post.

Ciao
alexmed
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5