Novità

TAB

In questo esempio si costruisce un goniometro,

utilizzando le capacità grafiche di cui avevo fatto cenno.

Le stesse che sono state proposte da Mike e da Ilegend.

Tuttavia per la comprensione di quanto contiene questo script,

è richiesta, la conoscenza, della trigonometria, della programmazione e della grafica.

Cioè di cosa sia il radiante, il PiGreco, Seno, Coseno la formula del cerchio

e la comprensione degli offset necessari per evitare che

la figura disegnata non rimanga nella pagina.

Tutto questo non lo si può spiegare in quattro parole (anche se lo script è commentato)

perché esso si compone di argomenti che in genere sono trattati, negli istituti tecnici,

nel corso di più anni scolastici.

Codice:
Option Explicit
Dim aPos(360,2) ' memorizza le coordinate relative ai 360 gradi serve per poter disegnare le corde
Sub Main
   Dim nRaggio ' raggio ddel cerchio
   Dim cX,cY ' centro del cerchio x e y
   Dim Bas,Altezza ' dimensioni area disegno
   Dim Angolo ' gestisce il ciclo per disegnare il cerchio
   Dim pi ' pigreco
   Dim x1,y1,x2,y2 ' coordinate generiche pr i segmenti
   Dim cLung ' distanza per stampare i gradi
   Dim k ' ciclo generico
   cLung = 2
   pi = 22/7
   Bas = 200
   Altezza = 200
   nRaggio = 60
   ' preimposto le dimensioni dell'area
   Call PicSetDimensioni(Bas,Altezza,Bas,Altezza)
   ' calcolo il centro del cerchio
   cX = Bas / 2
   cY = Altezza / 2


   Call PicCerchio(cX,cY,3)
   Call PicRiempi(cX,cY,vbRed)

   ' ciclo per disegnare i semiraggi
   For Angolo = 0 To 360
      ' calcolo cordinate per il segmento raggio
      x1 = cX +((nRaggio) * Cos(- Angolo *(pi / 180)))
      y1 = cY +((nRaggio) * Sin(- Angolo *(pi / 180)))
      ' memorizzo nell'array globale le coordinate appena calcolate
      ' cosi potranno essere riusate per disegnare le corde
      aPos(Angolo,1) = x1
      aPos(Angolo,2) = y1
      If Angolo Mod 5 = 0 Then
         ' ogni 5 gradi disegno un semiraggio un po' piu lungo
         ' e stampo i gradi in corripondenza
         If Angolo <> 0 Then
            x2 = cX +((nRaggio + cLung*3) * Cos(- Angolo *(pi / 180)))
            y2 = cY +((nRaggio + cLung*3) * Sin(- Angolo *(pi / 180)))
            Call PicLinea(x1,y1,x2,y2)
            x2 = cX +((nRaggio + cLung*4) * Cos(-(Angolo + 2) *(pi / 180)))
            y2 = cY +((nRaggio + cLung*4) * Sin(-(Angolo + 2) *(pi / 180)))
            Call PicStampaTestoRT(x2,y2,Angolo,Angolo)
         End If
      Else
         ' disegno il semiraggio
         x2 = cX +((nRaggio + cLung) * Cos(- Angolo *(pi / 180)))
         y2 = cY +((nRaggio + cLung) * Sin(- Angolo *(pi / 180)))
         Call PicLinea(x1,y1,x2,y2)
      End If
   Next
   ' come esempio disegno un poligono di lato 20
   For k = 0 To 340 Step 20
      Call DisegnaCorda(k,k + 20,vbRed)
   Next
   ' mostro la figura in output
   Call PicEsegui
End Sub
Sub DisegnaCorda(p1,p2,colore)
   ' p1 e p2 sono i gradi a cui si riferiscono inizio e fine della corda
   'Call PicLineaTratteggiata(aPos(p1,1),aPos(p1,2),aPos(p2,1),aPos(p2,2),colore)
   Call PicLinea(aPos(p1,1),aPos(p1,2),aPos(p2,1),aPos(p2,2),colore)
   Call PicPunto(aPos(p1,1),aPos(p1,2),6,colore)
   Call PicPunto(aPos(p2,1),aPos(p2,2),6,colore)
End Sub

:)

PS: Ringrazio Salvo sempre presente lettore attento e ...

Luigi per gli strumenti potentissimi che ha reso disponibili in Spaziometria.
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 22 novembre 2025
    Bari
    82
    08
    24
    45
    37
    Cagliari
    07
    16
    67
    74
    35
    Firenze
    76
    32
    44
    06
    51
    Genova
    22
    77
    19
    27
    89
    Milano
    46
    81
    56
    29
    85
    Napoli
    68
    90
    80
    06
    47
    Palermo
    31
    07
    43
    83
    19
    Roma
    08
    68
    17
    12
    57
    Torino
    87
    17
    61
    60
    58
    Venezia
    27
    05
    17
    72
    50
    Nazionale
    70
    76
    56
    81
    15
    Estrazione Simbolotto
    Torino
    26
    34
    10
    42
    33
Indietro
Alto