Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Mini Cad - Cerchi.vb

Cerchi.vb

Caricato da: Poggi Marco
Scarica il programma completo

  1. Public Class Cerchi
  2.     Inherits Figura
  3.  
  4.     Private segmentini As Integer
  5.  
  6.     Public Sub New(ByVal luogo As Disegno)
  7.         MyBase.New(luogo)
  8.         segmentini = 110
  9.     End Sub
  10.  
  11.     Public Overrides Sub disegna(ByVal cancellaPrecedente As Boolean)
  12.         If cancellaPrecedente Then
  13.             cancella()
  14.         End If
  15.         Dim ra, alfa, omega, passo As Double
  16.         Dim punti As Tratto = New Tratto(), centro As Tratto
  17.         centro = getCoordinate()
  18.         ra = raggio(centro)
  19.         punti.inizio.X = centro.inizio.X + ra
  20.         punti.inizio.Y = centro.inizio.Y
  21.         omega = Math.PI * 2.1
  22.         passo = omega / segmentini
  23.         alfa = 0
  24.         foglio.pennino = pennino
  25.         While alfa <= omega
  26.             punti.fine.X = centro.inizio.X + ra * Math.Cos(alfa)
  27.             punti.fine.Y = centro.inizio.Y + ra * Math.Sin(alfa)
  28.             foglio.linea(punti.inizio.X, punti.inizio.Y, punti.fine.X, punti.fine.Y)
  29.             punti.inizio = punti.fine
  30.             alfa += passo
  31.         End While
  32.     End Sub
  33.  
  34.     Public Overrides Sub cancella()
  35.         Dim ra, alfa, omega, passo As Double
  36.         Dim punti As Tratto = New Tratto(), centro As Tratto
  37.         centro = GetLeVecchieCoordinate()
  38.         ra = raggio(centro)
  39.         punti.inizio.X = centro.inizio.X + ra
  40.         punti.inizio.Y = centro.inizio.Y
  41.         omega = Math.PI * 2.1
  42.         passo = omega / segmentini
  43.         alfa = 0
  44.         Dim cancellino As Pen = New Pen(Color.White, pennino.Width + 2)
  45.         cancellino.StartCap = Drawing2D.LineCap.Square
  46.         cancellino.EndCap = Drawing2D.LineCap.Square
  47.         foglio.pennino = cancellino
  48.         While alfa <= omega
  49.             punti.fine.X = centro.inizio.X + ra * Math.Cos(alfa)
  50.             punti.fine.Y = centro.inizio.Y + ra * Math.Sin(alfa)
  51.             foglio.linea(punti.inizio.X, punti.inizio.Y, punti.fine.X, punti.fine.Y)
  52.             punti.inizio = punti.fine
  53.             alfa += passo
  54.         End While
  55.     End Sub
  56.     Public Overrides Sub disegna()
  57.         disegna(True)
  58.     End Sub
  59.  
  60.     Public Overrides Function ToString() As String
  61.         Dim coordinate As Tratto = getCoordinate()
  62.         Return String.Format("Cerchio in ({0}; {1}) di raggio {2:f3}", coordinate.inizio.X, coordinate.inizio.Y, raggio(coordinate))
  63.     End Function
  64.  
  65.     Private Function raggio(ByVal c As Tratto) As Double
  66.         Dim dx, dy As Double
  67.         dx = c.fine.X - c.inizio.X
  68.         dy = c.fine.Y - c.inizio.Y
  69.         Return Math.Pow(((dx * dx) + (dy * dy)), 0.5#)
  70.     End Function
  71.  
  72.     Public Overrides Function area() As Double
  73.         Dim r As Double
  74.         r = raggio(getCoordinate())
  75.         Return r * r * Math.PI
  76.     End Function
  77.  
  78.     Public Overrides Function perimetro() As Double
  79.         Dim r As Double
  80.         r = raggio(getCoordinate())
  81.         Return 2.0 * r * Math.PI
  82.     End Function
  83. End Class