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ì 14 gennaio 2025
    Bari
    41
    25
    12
    73
    55
    Cagliari
    54
    20
    48
    32
    67
    Firenze
    75
    23
    68
    10
    38
    Genova
    33
    27
    81
    70
    64
    Milano
    68
    01
    64
    86
    87
    Napoli
    47
    75
    45
    10
    21
    Palermo
    55
    86
    33
    53
    70
    Roma
    88
    78
    61
    06
    07
    Torino
    76
    08
    23
    61
    82
    Venezia
    25
    15
    49
    21
    81
    Nazionale
    70
    10
    32
    78
    07
    Estrazione Simbolotto
    Bari
    07
    14
    28
    45
    31

Ultimi Messaggi

Indietro
Alto