Après avoir taillé une dent par "génération" avec le programme qui la fait tangenter une crémaillère en translation, j'ai ajouté ce petit sous-programme voir visualiser à la fin du travail la roue complète reconstituée et pas seulement une dent. Ce sous-programme plante. Par contre si j'inhibe la grande boucle For Next, celle de 1 to N, il tourne et m'affiche la fenêtre, en ne montrant qu'une seule dent bien sûr).
(désolé je ne sais pas insérer un programme PB)
de Dobro :
Réedite ce message (bouton Editer)
pour voir comment j'ai ajouté les balises de code [ code] et [ /code]
il te faut absolument utiliser ces balises pour présenter tes codes sur le Forum Merci ...
Code : Tout sélectionner
ReconstitutionRoue:
If OpenWindow(0, 500, 100, 800, 800, "2D Drawing Test")
If CreateImage(0, 800, 800)
If StartDrawing(ImageOutput(0))
FrontColor(RGB(255,0,0)) ; Finally, red lines
;Dessin axes de coordonnées
LineXY(400,0,400,800,RGB(255,0,0))
LineXY(0,400,800,400,RGB(255,0,0))
;DESSIN DE LA ROUE COMPLETE;
For n=1 To N ;Boucle reconstitution des N dents
ArotRE0=ArotRE0+2*pi/N
For i=1 To DimTE ;Recalcul de tous les rayons
ArotRE(i)=ArepRE(i)+ArotRE0
Next
For i=1 To DimTE ;Calcul coordonneés paramétriques de tous les rayons
xCE.f=0
ArotRE(i)=ArepRE(i)+ArotRE0
xRE(i)=xCE+LRE(i)*Cos(ArotRE(i))
yRE(i)=yCE+LRE(i)*Sin(ArotRE(i))
Next
For i=1 To 201 ;Mise à l'échelle des pixels de la fenêtre
xRE(i)=40*xRE(i)+400
yRE(i)=-40*yRE(i)+400
Next
For k=1 To DimTE-1 ;Dessin des segments qui lient les extrémités des rayons
LineXY(xRE(k),yRE(k),xRE(k+1),yRE(k+1), RGB(0,255,0))
Next
For k=1 To DimTE ;Dessin de tous les rayons
LineXY(xRE(k),yRE(k),400,40*m*N/2+400, RGB(0,255,0))
Next
Next
DrawingMode(#PB_2DDrawing_Transparent)
BackColor(RGB(0,155,155)) ; Change the text back and front colour
FrontColor(RGB(255,255,255))
StopDrawing()
EndIf
EndIf
ImageGadget(0, 0, 0, 0, 0, ImageID(0))
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow ; If the user has pressed on the window close button
EndIf
Return