Vai al contenuto

Poligono regolare

Week 8: Graphical

Write a program that will draw a regular polygon for any given number of sides.
For example if the user enters 5 then the program will draw a regular pentagon.
Hint: You might need to brush up on your trigonometry skills!

Scrivi un programma per disegnare un poligono regolare per ogni dato numero di lati.
Per esempio se l’utente inserisce 5 allora il programma disegna un pentagono regolare.
Suggerimento: potresti aver bisogno di un ripasso di trigonometria!


Soluzione #1

TextWindow.Write("Numero lati: ")
numeroLati=TextWindow.ReadNumber()
'------------------------------------------------------
xC=GraphicsWindow.Width /2     ' centro del poligono
yC=GraphicsWindow.Height/2

raggio     =0.4*GraphicsWindow.Height
deltaAngolo=2*Math.Pi/numeroLati
angolo     =0

x1=xC+raggio*Math.Cos(angolo)  ' primo vertice a destra
y1=yC+raggio*Math.Sin(angolo)  
'------------------------------------------------------
For i=1 To numeroLati
  angolo=angolo+deltaAngolo
  x2=xC+raggio*Math.Cos(angolo)
  y2=yC+raggio*Math.Sin(angolo)
  GraphicsWindow.DrawLine(x1,y1,x2,y2)  
 
  x1=x2
  y1=y2
EndFor

Soluzione #2

casella=Controls.AddTextBox(25, 25) 
Controls.SetSize(casella, 25, 25) 
Controls.AddButton("Disegna", 50, 25) 
Controls.ButtonClicked=DisegnaPoligono
'------------------------------------------------------
xC=GraphicsWindow.Width /2     ' centro del poligono
yC=GraphicsWindow.Height/2
raggio=0.4*GraphicsWindow.Height
angolo=0
x1=xC+raggio*Math.Cos(angolo)  ' primo vertice a destra
y1=yC+raggio*Math.Sin(angolo)  
'------------------------------------------------------
Sub DisegnaPoligono
  numeroLati=Controls.GetTextBoxText(casella)
  deltaAngolo=2*Math.Pi/numeroLati
  For i=1 To numeroLati
    angolo=angolo+deltaAngolo
    x2=xC+raggio*Math.Cos(angolo)
    y2=yC+raggio*Math.Sin(angolo)
    GraphicsWindow.DrawLine(x1,y1,x2,y2)  
    
    x1=x2
    y1=y2
  EndFor
EndSub

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.