Home

SONAR-INFO-p9




Come tracciare i grafici delle caratteristiche di direttivitā del sonar ed altro



Sul tracciamento dei diagrammi in VB6.

In questo documento sono illustrati una serie di brevi programmi, in Visual Basic 6,
utili per la presentazione grafica delle funzioni operative e delle caratteristiche
di direttivitā del sonar,in particolare:

A-reticolo in coordinate cartesiane in scala doppio lineare.

B-reticolo in coordinate cartesiane in scala logaritmico/lineare a tre decadi.

C-reticolo in coordinate cartesiane in scala lineare/logaritmica a due decadi.

D-reticolo in coordinate cartesiane in scala lineare/logaritmica a tre decadi.

E-reticolo in coordinate cartesiane in scala doppio logaritmica a due decadi.

F-reticolo in coordinate polari in scala doppio lineare.

G-reticolo in coordinate polari in scala doppio lineare, presentazione di funzione.

H-reticolo in coordinate polari in scala lineare/logaritmica.

I programmi sono accompagnati da tracciati dimostrativi che aiutano alla scelta in base al
tipo di utilizzo. Tutte le funzioni a calcolo, che implicano computazioni logaritmiche,
devono essere, ovviamente, f(x) > 0.

 A -reticolo in coordinate cartesiane in scala  lineare.
Listato del programma con esempio per il tracciamento di una parabola (figura 1): 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 ' funzione da tracciare Y = 0.5 X2 + 3 X + 2 e = 10 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.

Listato del programma con esempio di tracciamento funzione logaritmica (figura 2).
Disporre su di un Label i valori di ascissa  1 ; 10 ; 100 ; 1000

'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

' funzione da tracciare  Y =  Log  x     (  per logaritmi a base 10 )

For x = 1 To 1000 Step 0.01

Y = Log(x) / Log(10)  ' per logaritmi a base e

'funzione grafica
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.
Listato del programma con esempio di tracciamento di una retta (figura 3).
Disporre su di un Label i valori di ordinata 1 ; 10 ; 100. 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 ' funzione da tracciare Y = 5 X + 1 y = (5 * x + 1) 'funzione grafica 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.
Listato del programma con esempio di tracciamento di una funzione esponenziale (figura 4). Disporre su di un Label i valori di ordinata 1 ; 10 ; 100 ; 1000 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) For x = 1 To 100 Step 0.01 'funzione da tracciare Y = X 1 . 5 Y = x^1.5 '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.
Listato del programma con esempio di tracciamento di una funzione iperbolica (figura 5). Disporre su due Label, in ascisse e ordinate, di valori 1 ; 10 ; 100 . 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 For x = 1 To 100 Step 0.01 Y = 100 / x ' funzione da tracciare '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.
Listato del programma con esempio di tracciamento relativo ad una serie di 36 dati,
uno ogni 10°, inseriti nella matrice md(dato) (figura 6). Disporre di Label negli assi ortogonali di valori 0° ; 90° ; 180° ; 270°. Private md(300) As Integre 'matrice dati da presentare Private arg(300) 'matrice angoli del tracciato 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), vbYellow Y = Sqr(Abs(X ^ 2)) Next X For X = -r To r Y = -Sqr(Abs(r ^ 2 - X ^ 2)) PSet (6000 + X, 4000 + Y), vbYellow 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), vbYellow PSet (6000 + X, 4000), vbYellow 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



 G -reticolo in coordinate polari in scala doppio lineare, presentazione di funzione.
Listato del programma con esempio di tracciamento relativo ad una funzione di direttivitā
teorica del tipo y = | Sen(x) / x | (figura 7). Disporre di Label negli assi ortogonali di valori 0° ; 90° ; 180° ; 270°. Private Sub form_paint() 'ISTRUZIONI PER TRACCIARE I RAGGI POLARI OGNI 10° For xy = 0 To 360 Step 10 X = 6000 Y = 4000 X1 = 60 * 50 * Cos((90 - xy) * 0.017453293) Y1 = (Tan((90 - (xy)) * 0.017453293) * X1) Line (6000, 4000)-(6000 + X1, 4000 - Y1), vbBlack Next xy 'ISTRUZIONI PER TRACCIARE GLI Ao = 10 CERCHI Ao = 0 ro = 0 For Ao = 1 To 10 ro = 300 + ro For X = -ro To ro Step 0.1 Y = Sqr(Abs(ro ^ 2 - X ^ 2)) PSet (6000 + X, 4000 + Y), vbBlack PSet (6000 + X, 4000 - Y), vbBlack Next X Next Ao 'ISTRUZIONI PER I RAGGI ORTOGONALI Line (6000, 7000)-(6000, 1000), vbRed Line (3000, 4000)-(9000, 4000), vbRed 'ISTRUZIONI PER L'INSERIMENTO DELLA FUNZIONE DA PRESENTARE For xx = 0 To 360 lobo = 15 ' nell'esempio governa la larghezza del lobo beta = (0.001 + xx - 180) / lobo md = Abs(Sin(beta) / (beta)) ' funzione da presentare X = 3000 * md * Cos((270 - xx) * 0.017453293) Y = 3000 * md * Sin((270 - xx) * 0.017453293) Circle (6000 + X, 4000 - Y), 10, vbBlue Next xx End Sub



 H-reticolo in coordinate polari in scala lineare/logaritmica.
Listato del programma con esempio di tracciamento relativo ad una funzione adatta alla prova
della scala logaritmica in coordinate polari:
Y = ( 1 + ( 2 Sin( 0.0174 X / 2) + (Cos( 5 X 0.0174) )) 2 ) (figura 8). Disporre di Label negli assi ortogonali di valori 0° ; 90° ; 180° ; 270°. Private Sub form_paint() 'ISTRUZIONI PER TRACCIARE I RAGGI POLARI OGNI 10° For xy = 0 To 360 Step 10 X = 6000 Y = 4000 X1 = 3000 * Cos((90 - xy) * 0.017453293) Y1 = 3000 * Sin((90 - xy) * 0.017453293) Line (6000, 4000)-(6000 + X1, 4000 - Y1), vbBlack Next xy 'LA SCALA LOGARITMICA é VALIDA SOLTANTO DA 1 a 10, NON č MOLTIPLICABILE 'le funzioni da rappresentare se hanno il valore max superiore 'a 10 devono essere divise per opportuni coefficienti For Ao = 1 To 10 Step 1 aa = aa + 1 md = Log(aa) / Log(10) For xx = 0 To 360 Step 0.1 X = 3000 * md * Cos((90 - xx) * 0.017453293) Y = 3000 * md * Sin((90 - xx) * 0.017453293) PSet (6000 + X, 4000 - Y), vbBlack Next Next 'ISTRUZIONI PER I RAGGI ORTOGONALI Line (6000, 7000)-(6000, 1000), vbRed Line (3000, 4000)-(9000, 4000), vbRed 'ISTRUZIONI PER LA PRESENTAZIONE DELLA FUNZIONE For xx = 0 To 360 md = Log(1 + (2 * Sin(xx * 0.0174 / 2) + (Cos(5 * xx * 0.0174))) ^ 2) / Log(10) X = 3000 * md * Cos((270 - xx) * 0.017453293) Y = 3000 * md * Sin((270 - xx) * 0.017453293) Circle (6000 + X, 4000 - Y), 10, vbBlue Next xx End Sub





Home