@G-Rom
Ce n'est pas très compliqué à calculer. C'est 2 changements de repères sur un plan... C'est surtout savoir si les servos peuvent supporter un tel levier... On doit gagner quelques centimètres carré seulement de possibilité de tracer, donc c'est vrai, j'ai été prendre ma tisane!
J'ai tenté de faire un truc pour cerner le problème. Mais j'en vois pas pour l'instant. Un angle d'usure à anticiper pour s'épargner un rodage? Je ne pense pas que ce soit très important.
Ça doit être surtout mettre en adéquation la définition de l'imprimante 3D avec l'interpolation entre 2 points d'un schéma théorique qui me semble la difficulté...
Si on a des points, on peut faire des segments, découper ces segments proportionnellement en fonction d'une distance minimum de travail d'impression (1.0, sqr(2), sqr(3) ) selon le déplacement de la tête d'impression.
Or, on a des points cohérents assez facilement... Comprends pas la tuile...
Touche Espace = Cycle Stop;Play;Stop;Back
Touche Entrée = Mode segments/Mode points
Rem: En mode point, chaque point a une couleur. Ça permet de se repérer un peu...
Point 0: Noir
1: Bleu
2: Vert
3: Cyan
4: Rouge
5: Magenta
6: Jaune
7: Blanc
Touche PageUp/PageDown : Zoom
Touches flèches: Scroller
Code : Tout sélectionner
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops()
Dw = DesktopWidth(0)
Dh = DesktopHeight(0)
Dd = DesktopDepth(0)
OpenScreen(Dw, Dh, Dd, "")
Define.D Angle00, Angle10, DentQtt = 48, Ampli, DentAmpli = 10.0, DentRayon = 200.0, Rayon, Xe, Ye, Xd, Yd, Zoom = 1.0, ScrollVitesse = 10.0, Angle20, ImageParDent = 3.0, Sens = 0.0, CosSens
#PIx2 = 2.0 * #PI
CouleurA = RGB(255, 127, 127)
CouleurB = RGB(127, 127, 255)
Procedure CouleurC(J)
ProcedureReturn RGB(255 * ((J & 4) >> 2), 255 * ((J & 2) >> 1), 255 * (J & 1) )
EndProcedure
Repeat
Delay(16)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left): Xd - ScrollVitesse / Zoom: EndIf
If KeyboardPushed(#PB_Key_Right): Xd + ScrollVitesse / Zoom: EndIf
If KeyboardPushed(#PB_Key_Up): Yd - ScrollVitesse / Zoom: EndIf
If KeyboardPushed(#PB_Key_Down): Yd + ScrollVitesse / Zoom: EndIf
If KeyboardPushed(#PB_Key_PageUp): Zoom * 1.01: EndIf
If KeyboardPushed(#PB_Key_PageDown): Zoom / 1.01: EndIf
If KeyboardReleased(#PB_Key_Space): Sens + (#PI / 2.0): CosSens = Cos(Sens): EndIf
If KeyboardReleased(#PB_Key_Return): Lined ! 1: EndIf
ClearScreen(0)
StartDrawing(ScreenOutput() )
For I = 0 To (DentQtt - 1)
Angle00 = (2.0 * #PI / DentQtt) * I + Angle20
For J = 0 To 7
If (J <> 0) And (J <> 4)
Angle10 = (2.0 * #PI / 8) * J
Ampli = Cos(Angle10) * DentAmpli
Xe0 = Xe1
Ye0 = Ye1
Xe = Cos(Angle00 + (Angle10 / DentQtt) ) * (DentRayon + Ampli)
Ye = 0.0 - Sin(Angle00 + (Angle10 / DentQtt) ) * (DentRayon + Ampli)
Xe1 = (Dw / 2.0) + ((Xe - Xd) * Zoom)
Ye1 = (Dh / 2.0) + ((Ye - Yd) * Zoom)
Box(Xe1, Ye1, 1, 1, CouleurC(J) )
If Lined: LineXY(Xe0, Ye0, Xe1, Ye1, CouleurA): EndIf
Xf0 = Xf1
Yf0 = Yf1
Xf = (Angle00 + (Angle10 / DentQtt) - #PI) * DentRayon
Yf = (DentRayon + Ampli)
Xf1 = (Dw / 2.0) + ((Xf - Xd) * Zoom)
Yf1 = (Dh / 2.0) + ((Yf - Yd) * Zoom)
Box(Xf1, Yf1, 1, 1, CouleurC(J) )
If (I > 0) And Lined: LineXY(Xf0, Yf0, Xf1, Yf1, CouleurB): EndIf
EndIf
Next
Next
Angle20 + ((2.0 * #PI / DentQtt / ImageParDent) * CosSens)
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End