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 21 marzo 2026
    Bari
    17
    81
    25
    89
    06
    Cagliari
    83
    36
    05
    76
    69
    Firenze
    06
    43
    60
    21
    44
    Genova
    84
    56
    21
    75
    33
    Milano
    79
    24
    89
    05
    02
    Napoli
    76
    65
    70
    31
    05
    Palermo
    29
    07
    67
    62
    18
    Roma
    66
    10
    89
    57
    28
    Torino
    18
    40
    85
    09
    04
    Venezia
    51
    22
    11
    66
    73
    Nazionale
    41
    66
    86
    52
    44
    Estrazione Simbolotto
    Firenze
    06
    38
    14
    12
    02
Indietro
Alto