|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2011
Città: Catania
Messaggi: 217
|
[vb2005] Disegno di funzioni matematiche
Ciao ragazzi. Allora ho un problema.
Devo sviluppare un programma che disegni una funzione del tipo f(x)= (ax^2+bx+c)/(a2x^2+b2x+c2) Faccio così: dc è una variabile che mi indica se il dominio della funziona sia qualunque x(dc=1) oppure se abbia dei punti di discontinuità(dc=0) s è una variabili che contiene il valore della scala/zoom e può assumere il valore min di 10 xpoint e ypoint sono le coordinate dell'origine degli assi If dc = 1 Then xc = -50 y = ((a * xc ^ 2 + b * xc + c) / (a2 * xc ^ 2 + b2 * xc + c2)) * s For i = xc To 50 Step 1 y2 = ((a * i ^ 2 + b * i + c) / (a2 * i ^ 2 + b2 * i + c2)) * s e.Graphics.DrawLine(Pens.Blue, xpoint + xc * s, ypoint - y, xpoint + i * s, ypoint - y2) xc = i y = y2 Next End If If dc = 0 Then dom1 = dom * s dom3 = dom2 * s If dom1 > dom3 Then temp = dom3 dom3 = dom1 dom1 = temp End If e.Graphics.DrawLine(Pens.Red, xpoint + dom1, 0, xpoint + dom1, 700) e.Graphics.DrawLine(Pens.Red, xpoint + dom3, 0, xpoint + dom3, 700) dom1 = (dom + 0.1) * s dom3 = (dom2 + 0.1) * s If dom1 > dom3 Then temp = dom3 dom3 = dom1 dom1 = temp End If xc = 100 y = ((a * (xc) ^ 2 + b * (xc) + c) / (a2 * (xc) ^ 2 + b2 * (xc) + c2)) * s For i = xc To dom3 Step -1 y2 = ((a * i ^ 2 + b * i + c) / (a2 * i ^ 2 + b2 * i + c2)) * s e.Graphics.DrawLine(Pens.Blue, xpoint + xc * s, ypoint - y, xpoint + i * s, ypoint - y2) xc = i y = y2 Next xc = dom1 y = ((a * (xc) ^ 2 + b * (xc) + c) / (a2 * (xc) ^ 2 + b2 * (xc) + c2)) * s For i = xc To -150 Step -1 y2 = ((a * i ^ 2 + b * i + c) / (a2 * i ^ 2 + b2 * i + c2)) * s e.Graphics.DrawLine(Pens.Blue, xpoint + xc * s, ypoint - y, xpoint + i * s, ypoint - y2) xc = i y = y2 Next xc = dom1 y = ((a * (xc) ^ 2 + b * (xc) + c) / (a2 * (xc) ^ 2 + b2 * (xc) + c2)) * s For i = xc To (dom3) Step 1 y2 = ((a * i ^ 2 + b * i + c) / (a2 * i ^ 2 + b2 * i + c2)) * s e.Graphics.DrawLine(Pens.Blue, xpoint + xc * s, ypoint - y, xpoint + i * s, ypoint - y2) xc = i y = y2 Next End If Ho alcuni problemi nel fatto che non funziona sempre xD cioè con alcuni valori che inserisco il disegno va, in altri mi da overflow. Poi vorrei sapere qual è il metodo per poter disegnare la funzione mettendo lo step del 'for' non intero tipo 0.1, perchè così il disegno mi viene incompleto e se metto meno di 1 il programma non funge. Grz in anticipo
__________________
Cpu: AMD FX-8350@ 4.2Ghz |Ram: Kit 2x2 Gb DDR3 1333Mhz + 1x4Gb 1600Mhz Corsairs XMS3| Mobo: Asus M5A97 Evo r2.0 |Vga: G1 Gaming GTX 970 4GB |HDD: Maxtor 250Gb 7200rpm + SSD: SanDisk Ultra II 240Gb|Alimentatore : Cooler Master GX650W |S.o: Win 10 Pro 64 bit|Case: HAF XB EVO| Cooler: Artic cooling freezer extreme v2 Ultima modifica di Hideki-San : 07-06-2011 alle 18:42. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Anzitutto un paio di considerazioni :
1. Un qualsiasi processo finalizzato al disegno di una Funzione matematica dovrebbe prevedere la separazione della parte destinata al calcolo dei punti chiave, dalla parte destinata alla rappresentazione grafica degli stessi. Nel tuo codice mi pare di leggere che queste due parti sono "fuse" in un unico flusso... 2. I punti non calcolabili, vanno intercettati e gestiti nella prima parte. C'è un mio articolo su altro Forum che penso potrai trovare interessante : http://forum.masterdrive.it/visual-b...grafici-51874/ ![]()
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ] Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ] |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Mar 2011
Città: Catania
Messaggi: 217
|
Grazie per la risposta
![]() ![]() ![]() Ti posto il link dell'eseguibile così gli dai un'occhiata se ti va ![]() http://www.megaupload.com/?d=2WE8TLO7 Ancora devo completare qualcosa per i risultati, ma la parte grafica è completa. Ha un piccolo difettuccio per via dell'effetto grafico della comparsa del grafico, che a volte appesantisce la cpu e rallenta la visualizzazione xD
__________________
Cpu: AMD FX-8350@ 4.2Ghz |Ram: Kit 2x2 Gb DDR3 1333Mhz + 1x4Gb 1600Mhz Corsairs XMS3| Mobo: Asus M5A97 Evo r2.0 |Vga: G1 Gaming GTX 970 4GB |HDD: Maxtor 250Gb 7200rpm + SSD: SanDisk Ultra II 240Gb|Alimentatore : Cooler Master GX650W |S.o: Win 10 Pro 64 bit|Case: HAF XB EVO| Cooler: Artic cooling freezer extreme v2 Ultima modifica di Hideki-San : 08-06-2011 alle 13:12. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:06.