C. Del Turco Inviato 17 Febbraio Segnala Share Inviato 17 Febbraio (modificato) Sono disponibili nel post 6 programmi in Visual Basic per esercitazioni di calcolo e grafica per le componenti sonar; ciascun programma può essere utilizzato mediante copia ed incolla su di un sistema operativo VB. A -reticolo in coordinate cartesiane in scala doppio lineare (fig. 1) Rem Listato del programma con esempio per il tracciamento di una parabola: Rem dimensione Form al max Rem routine per il tracciamento del reticolo cartesiano Private Sub Form_Paint() For x = 0 To 6400 Step 320 For Y = 0 To 6400 Step 40 PSet (x, Y), 7 Next Y Next x For Y = 0 To 6400 Step 320 For x = 0 To 6400 Step 42 PSet (x, Y), 7 Next x Next Y Line (3200, 0)-(3200, 6400) Line (0, 3200)-(6400, 3200) PSet (46000 * t, 4000 - 1200 * Y1 / 2), vbRed PSet (46000 * t, 4000 - 1200 * 0), vbRed PSet (46000 * t, 2000 - 1200 * Y2 / 2), vbBlack PSet (46000 * t, 2000 - 1200 * 0), vbBlack Rem funzione da tracciare Y = 0.5 X2 + 3 X + 2 e = 10 Rem anello per computo e grafico della funzione Y=f(x) For x = -e To e Step 0.001 Y = 0.5 * (x ^ 2) + 3 * x + 2 PSet (3200 + (3200 / e) * x, 3200 - (3200 / e) * Y), vbRed ' funzione grafica Next x End Sub B -reticolo in coordinate cartesiane in scala logaritmico/lineare a tre decadi (fig.2). Rem Listato del programma con esempio di tracciamento funzione logaritmica Rem Disporre su di un Label sotto il grafico con i valori di ascissa 1 ; 10 ; 100 ; 1000 Rem dimensione Form al max Rem COSTRUZIONE RETICOLO LOGARTMICO LINEARE Private Sub Form_Paint() For Y = 200 To 6600 Step 40 For a = 0 To 2 For x = 1 To 10 Step 1 s = 3066.7 PSet (a * (s * Log(10) / Log(10)) + 400 + s * Log(x) / Log(10), Y), vbBlack Next Next Next For Y = 200 To 6600 Step 320 For x = 400 To 9600 Step 60 PSet (x, Y) Next x Next Y Line (400, 6600)-(9600, 6600), vbBlack Line (400, 200)-(400, 6600), vbBlack Rem funzione da tracciare Y = Log x ( per logaritmi a base 10 ) Rem anello per calcolo e grafica Y = f(x) For x = 1 To 1000 Step 0.01 Y = Log(x) / Log(10) ' per logaritmi a base e PSet (400 + (3066.7 * Log(x) / Log(10)), 6600 - 2133.33 * Y), vbRed Next End Sub C -reticolo in coordinate cartesiane in scala lineare/logaritmica a due decadi. (fig 3) Rem Listato del programma con esempio di tracciamento di una retta Rem Disporre su di un Label i valori di ordinata 1 ; 10 ; 100. Rem form al max Rem tracciamento reticolo Private Sub Form_Paint() For x = 500 To 9700 Step 60 For a = 0 To 1 For c = 1 To 10 k = 3200 PSet (x, (6600 - (a * (k * Log(10) / Log(10)) + k * Log(c) / Log(10)))), 7 Next Next Next For x = 500 To 9700 Step 460 For y = 200 To 6600 Step 40 PSet (x, y), 7 Next y Next x Line (500, 6600)-(9700, 6600) Line (500, 200)-(500, 6600) For x = 0 To 20 Step 0.001 Rem funzione da tracciare Y = 5 X + 1 y = (5 * x + 1) Rem Calcolo e grafica funzione da tracciare PSet (500 + (9200 * x / 20), 6600 - 3200 * (Log(y) / Log(10))), 7 Next End Sub D -reticolo in coordinate cartesiane in scala lineare logaritmica a tre decadi. (fig 4) Rem Listato del programma con esempio di tracciamento di una funzione esponenziale Rem Disporre su di un Label i valori di ordinata 1 ; 10 ; 100 ; 1000 Rem form al max Rem Tracciamento reticolo Private Sub Form_Paint() For x = 500 To 9700 Step 60 For a = 0 To 2 For c = 1 To 10 k = 2130 PSet (x, (6600 - (a * k + k * Log(c) / Log(10)))), 7 Next Next Next For x = 500 To 9700 Step 460 For y = 200 To 6600 Step 40 PSet (x, y), 7 Next y Next x Line (500, 6600)-(9700, 6600) Line (500, 200)-(500, 6600) Rem anello calcolo e grafica for x = 1 To 100 Step 0.01 Rem funzione da tracciare Y = X 1 . 5 Y = x^1.5 Rem funzione grafica PSet (500 + 92 * x, 6600 - 2130 * (Log( Y )) / Log(10)), vbBlue Next End Sub E -reticolo in coordinate cartesiane in scala doppio logaritmica a due decadi. (fig. 5) Rem Listato del programma con esempio di tracciamento di una funzione iperbolica Rem Disporre su due Label, in ascisse e ordinate, di valori 1 ; 10 ; 100 . Rem Form al max Rem tracciamento reticolo Private Sub Form_Paint() For Y = 200 To 6600 Step 40 For a = 0 To 1 For x = 1 To 10 s = 4600 PSet (a * s + 500 + s * Log(x) / Log(10), Y), vbBlack Next x Next a Next Y For x = 500 To 9700 Step 60 For a = 0 To 1 For c = 1 To 10 k = 3200 PSet (x, (6600 - (a * (k * Log(10) / Log(10)) + k * Log(c) / Log(10)))), vnblack Next c Next a Next x Line (500, 6600)-(9700, 6600), vbBlack Line (500, 200)-(500, 6600), vbBlack Rem anello calcolo e grafica funzione Y(f(x) For x = 1 To 100 Step 0.01 Y = 100 / x ' funzione da tracciare Rem funzione grafica PSet (500 +(4600*Log(x)/Log(10)), 6600 - 3200 * (Log(Y) / Log(10))), vbRed Next End Sub F -reticolo in coordinate polari in scala doppio lineare, prsentazione di tabella (fig. 6) Rem Listato del programma con esempio di tracciamento relativo ad una serie di 36 dati, Rem uno ogni 10°, inseriti nella matrice md(dato) Rem Disporre di Label negli assi ortogonali di valori 0° ; 90° ; 180° ; 270°. Rem dichiarazioni matrici Private md(300) As Integer 'matrice dati da presentare Private arg(300) 'matrice angoli del tracciato Rem tracciato polare Private Sub Form_Paint() a = 0 r = 0 For a = 1 To 10 r = 300 + r For X = -r To r Y = Sqr(Abs(r ^ 2 - X ^ 2)) PSet (6000 + X, 4000 + Y), vbRed Y = Sqr(Abs(X ^ 2)) Next X For X = -r To r Y = -Sqr(Abs(r ^ 2 - X ^ 2)) PSet (6000 + X, 4000 + Y), vbRed Y = -Sqr(Abs(X ^ 2)) Next Next a For alfa = 0.0001 To 360 Step 10 For X = -3000 To 3000 Y1 = (Tan(alfa * 0.017453293) * X) If Y1 > r * Sin(alfa * 0.017453293) Then Y1 = 0 If Y1 < -r * Sin(alfa * 0.017453293) Then Y1 = 0 PSet (6000 + X, 4000 + Y1), vbRed PSet (6000 + X, 4000), vbRed Next X Line (6000, 1000)-(6000, 7000) Next alfa 'MATRICE md(dato) CONTENENTE I DATI DA PRESENTARE md(0) = 100 md(1) = 150 md(2) = 200 md(3) = 230 md(4) = 300 md(5) = 280 md(6) = 350 md(7) = 400 md(8) = 450 md(9) = 420 md(10) = 450 md(11) = 400 md(12) = 300 md(13) = 250 md(14) = 200 md(15) = 180 md(16) = 190 md(17) = 170 md(18) = 160 md(19) = 180 md(20) = 160 md(21) = 150 md(22) = 250 md(23) = 300 md(24) = 400 md(25) = 480 md(26) = 500 md(27) = 500 md(28) = 480 md(29) = 400 md(30) = 300 md(31) = 350 md(32) = 280 md(33) = 290 md(34) = 170 md(35) = 150 For c = 0 To 36 arg(c) = 90 - (10 * c) Next c For xx = 0 To 36 'CALCOLO PER IL POSIZIONAMENTO DEI PUNTI X = 5 * md(xx) * Cos(arg(xx) * 0.017453293) Y = (Tan(arg(xx) * 0.017453293) * X) Circle (6000 + X, 4000 - Y), 40 'CALCOLO PER IL TRACCIAMENTO DEI SEGMENTI D'UNIONE TRA I PUNTI '(il calcolo si avvale anche delle variabili X ed Y 'calcolate nelle istruzioni superiori) X1 = 5 * md(xx + 1) * Cos(arg(xx + 1) * 0.017453293) Y1 = (Tan(arg(xx + 1) * 0.017453293) * X1) Line (6000 + X, 4000 - Y)-(6000 + X1, 4000 - Y1) Next xx End Sub Modificato 17 Febbraio da C. Del Turco Citare Link al commento Condividi su altri siti More sharing options...
Messaggi raccomandati
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.