Imaginons, que nous dessinons un arc de cercle.
Supposons que le centre de cet arc soit x = 200, y = 300, l'angle de départ a1 = -30 et l'angle de fin a2 = -60.
En mathématiques, l'axe des y va vers le haut. Mais dans GraphicsWindow de Small Basic, l'axe des y va vers le bas. Donc signer (inverse négatif) l'angle et il devient son opposé.



Si vous n'utilisez pas les fonctions trigonométriques, utilisez uniquement 0, 30, 45, 60, 90, ...[degrés]. Entre ces angles vous pouvez calculer la hauteur s à partie de la largeur c d'un triangle dont les trois sommets r, c, s comme l'image précédente ont la relation r2 = s2 + c2 .  

Mais pour n'importe quel autre triangle, utilisez les fonctions trigonométriques (sin, cos).


Faites attention car les fonctions trigonométriques utilise des [radian] au lieu de [degré] dans le Small Basic.

Vous pouvez utiliser Math.GetRadians(degree) pour convertir des degrés en radians.

L'exemple suivant montre comment ne pas utiliser ou comment utiliser les fonctions trigonométriques pour dessiner les arcs de cercle.


gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
DrawGrid()
x = 200
y = 300
r = 200
DrawArcwoTrigo()
Program.Delay(3000)
GraphicsWindow.Clear()
DrawGrid()
a1 = -30
a2 = -60
DrawArcwTrigo()
Sub DrawArcwoTrigo  ' draw arc without trigonometric functions
  GraphicsWindow.Title = "Arc without Trigonometric Functions"
  c1 = r * Math.SquareRoot(3) / 2   ' a1 = -30
  c2 = r / 2                        ' a2 = -60
  r2 = Math.Power(r, 2)
  For c = c1 To c2 Step -1
    s = Math.SquareRoot(r2 - Math.Power(c, 2))
    x2 = x + c
    y2 = y - s
    If c = c1 Then
      GraphicsWindow.PenColor = "Gray"
      GraphicsWindow.DrawLine(x, y, x2, y2)
    Else
      GraphicsWindow.PenColor = "Black"
      GraphicsWindow.DrawLine(x1, y1, x2, y2)
    EndIf
    If c - 1 < c2 Then
      GraphicsWindow.PenColor = "Gray"
      GraphicsWindow.DrawLine(x, y, x2, y2)
    EndIf
    x1 = x2
    y1 = y2
  EndFor
EndSub
Sub DrawArcwTrigo  ' draw arc with trigonometric functions
  GraphicsWindow.Title = "Arc with Trigonometric Functions"
  For a = a1 To a2 Step -0.3
    x2 = x + r * Math.Cos(Math.GetRadians(a))
    y2 = y + r * Math.Sin(Math.GetRadians(a))
    If a = a1 Then
      GraphicsWindow.PenColor = "Gray"
      GraphicsWindow.DrawLine(x, y, x2, y2)
    Else
      GraphicsWindow.PenColor = "Black"
      GraphicsWindow.DrawLine(x1, y1, x2, y2)
    EndIf
    If a - 0.3 < a2 Then
      GraphicsWindow.PenColor = "Gray"
      GraphicsWindow.DrawLine(x, y, x2, y2)
    EndIf
    x1 = x2
    y1 = y2
  EndFor
EndSub
Sub DrawGrid
  GraphicsWindow.PenColor = "MediumSeaGreen"
  GraphicsWindow.BrushColor = "MediumSeaGreen"
  For _x = 0 To gw Step 50
    GraphicsWindow.DrawLine(_x, 0, _x, gh)
    If gw - 50 < _x Then
      GraphicsWindow.DrawText(_x + 4, 4, "x")
    Else
      GraphicsWindow.DrawText(_x + 4, 4, _x)
    EndIf
  EndFor
  For _y = 0 To gh Step 50
    GraphicsWindow.DrawLine(0, _y, gw, _y)
    If gh - 50 < _y Then
      GraphicsWindow.DrawText(4, _y + 4, "y")
    Else
      GraphicsWindow.DrawText(4, _y + 4, _y)
    EndIf
  EndFor
EndSub




Autres Langues