bjr à tous
pour tracer un arc de cercle avec la fonction line()
Cordialement
PS: pour ceux qui ont oublié la syntaxe pour avoir le code forum en couleur
if faut ajouter aux balises codes : "-pb" exemple: [ code-pb ][ /code-pb ]
Code : Tout sélectionner
Global x.d, y.d, xx.d, yy.d, cw.l, ch.l, rayon.l,dg.l
cw = 300 ; centre x
ch = 300 ; centre y
rayon = 200
dg = 180 ; taille de l'arc
OpenWindow(0,0,0,600,600,"trace cercle",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StartDrawing(WindowOutput(0))
DrawingMode(4)
For o = 0 To dg
x = cw + rayon * Sin(Radian(o))
y = ch + rayon * Cos(Radian(o))
xx = cw + rayon * Sin(Radian(o + 1))
yy = ch + rayon * Cos(Radian(o + 1))
LineXY(x,y,xx,yy,RGB(0,0,0))
Next o
StopDrawing()
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
Mode Arc avec Graduations
Code : Tout sélectionner
Global cw.l,ch.l,rayon.l,x.d,y.d,xx.d,yt.d,dg.l
Global wlargeur.l,whauteur.l
wlargeur = 600
whauteur = 600
rayon = 300
cw = 400
ch = 400
debut.l = 0
fin.l = 360
Procedure dessin(debut.l,fin.l)
DrawingMode(4)
For o = debut To fin -1
x = cw + rayon * Sin(Radian(o))
y = ch + rayon * Cos(Radian(o))
xx = cw + rayon * Sin(Radian(o + 1))
yy = ch + rayon * Cos(Radian(o + 1))
LineXY(x,y,xx,yy,RGB(0,0,0))
Next o
For o = debut To fin Step 30
x = cw + rayon * Sin(Radian(o))
y = ch + rayon * Cos(Radian(o))
xx = cw + (rayon - rayon / 17) * Sin(Radian(o))
yy = ch + (rayon - rayon / 17) * Cos(Radian(o))
LineXY(xx,yy,x,y,RGB(0,0,0))
x = cw + (rayon - rayon / 11) * Sin(Radian(o))
y = ch + (rayon - rayon / 11) * Cos(Radian(o))
xx = cw + (rayon - rayon / 3.5) * Sin(Radian(o))
yy = ch + (rayon - rayon / 3.5) * Cos(Radian(o))
LineXY(xx,yy,x,y,RGB(0,0,0))
If o <= fin - 1
For i = 1 To 29
If i = 5 Or i = 15 Or i = 25
x = cw + rayon * Sin(Radian(i + o))
y = ch + rayon * Cos(Radian(i + o))
xx = cw + (rayon - rayon / 22) * Sin(Radian(i + o))
yy = ch + (rayon - rayon / 22) * Cos(Radian(i + o))
LineXY(x,y,xx,yy,RGB(0,0,0))
ElseIf i = 10 Or i = 20
x = cw + rayon * Sin(Radian(i + o))
y = ch + rayon * Cos(Radian(i + o))
xx = cw + (rayon - rayon / 16) * Sin(Radian(i + o))
yy = ch + (rayon - rayon / 16) * Cos(Radian(i + o))
LineXY(xx,yy,x,y,RGB(0,0,0))
Else
x = cw + rayon * Sin(Radian(i + o))
y = ch + rayon * Cos(Radian(i + o))
xx = cw + (rayon - rayon / 33) * Sin(Radian(i + o))
yy = ch + (rayon - rayon / 33) * Cos(Radian(i + o))
LineXY(xx,yy,x,y,RGB(0,0,0))
EndIf
Next i
EndIf
Next o
LineXY(cw - rayon / 20,ch,cw + rayon / 20,ch,RGB(0,0,0))
LineXY(cw,ch - rayon / 20,cw,ch + rayon / 20,RGB(0,0,0))
EndProcedure
OpenWindow(0,0,0,800,800,"trace cercle",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StartDrawing(WindowOutput(0))
dessin(120,240)
StopDrawing()
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow