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ì 28 luglio 2026
    Bari
    82
    27
    80
    03
    69
    Cagliari
    23
    01
    08
    88
    72
    Firenze
    89
    69
    62
    56
    54
    Genova
    71
    75
    43
    38
    69
    Milano
    89
    71
    34
    29
    87
    Napoli
    55
    10
    18
    72
    85
    Palermo
    47
    09
    81
    12
    65
    Roma
    60
    35
    58
    68
    67
    Torino
    66
    38
    30
    73
    17
    Venezia
    88
    11
    13
    48
    21
    Nazionale
    79
    56
    73
    05
    39
    Estrazione Simbolotto
    Nazionale
    01
    29
    34
    28
    10

Ultimi Messaggi

Indietro
Alto