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
    martedì 23 giugno 2026
    Bari
    42
    24
    70
    09
    58
    Cagliari
    27
    49
    43
    76
    40
    Firenze
    69
    03
    65
    72
    62
    Genova
    19
    28
    03
    85
    75
    Milano
    17
    05
    43
    40
    38
    Napoli
    24
    55
    02
    32
    69
    Palermo
    55
    70
    54
    90
    12
    Roma
    49
    88
    21
    02
    24
    Torino
    58
    16
    60
    38
    73
    Venezia
    84
    12
    69
    02
    44
    Nazionale
    75
    14
    79
    44
    47
    Estrazione Simbolotto
    Napoli
    29
    43
    41
    34
    14
Indietro
Alto