Page 1 sur 1

Géométrie - Faire un congé entre 2 droites

Publié : mar. 31/mai/2011 23:48
par Le Soldat Inconnu
J'avais besoin de cela pour le boulot, calcul de trajectoire sur une machine. Si ça peut vous servir.

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.50
;
; Explication du programme :
; Création congé entre 2 droites

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 500, 500, "Congé", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
  End
EndIf

; Données
S_X1.d = 200 ; Droite du sommet : position X1
S_X2.d = 500 ; Droite du sommet : position X2
S_Y.d = 300 ; Droite du sommet : position Y
P_X1.d = 0 ; Droite en pente qui joint le sommet :position X1
P_Y1.d = 0 ; Droite en pente qui joint le sommet :position Y1
P_X2.d = S_X1 ; Droite en pente qui joint le sommet :position X2
P_Y2.d = S_Y ; Droite en pente qui joint le sommet :position Y2
R.d = 100 ; Rayon du congé entre les 2 droites

; Calcul du centre du rayon
R_CY.d = S_Y - R

P_A.d = (P_Y2 - P_Y1) / (P_X2 - P_X1)
P_B.d = P_Y1 - P_A * P_X1
Angle.d = ATan(P_A) + #PI / 2
R_X.d = P_X2 + R * Cos(Angle)
R_Y.d = R_CY + R * Sin(Angle)

R_CX.d = P_X2 + (R_Y - P_B) / P_A - R_X

; On coupe les 2 droites
S_X1 = R_CX
P_Y2 = R_Y
P_X2 = R_CX + R_X - P_X2


CreateImage(0, 500, 500, 32 | #PB_Image_Transparent)
StartDrawing(ImageOutput(0))
	DrawingMode(#PB_2DDrawing_AlphaBlend | #PB_2DDrawing_Outlined)
	
	Circle(R_CX, R_CY, R, $FF0000FF)
	LineXY(P_X1, P_Y1, P_X2, P_Y2, $FF000000)
	LineXY(S_X1, S_Y, S_X2, S_Y, $FF000000)
	
StopDrawing()
ImageGadget(0, 0, 0, 500, 500, ImageID(0))

Repeat
  Event = WaitWindowEvent()
  
Until Event = #PB_Event_CloseWindow

Re: Géométrie - Faire un congé entre 2 droites

Publié : mer. 01/juin/2011 9:05
par Torp
Merci pour le partage !

Re: Géométrie - Faire un congé entre 2 droites

Publié : mer. 01/juin/2011 14:41
par graph100
Tu codes pour des machines outils ? (genre trajectoire outils)

Re: Géométrie - Faire un congé entre 2 droites

Publié : mer. 01/juin/2011 18:00
par Le Soldat Inconnu
euh, dans ce cas, on peut dire ça. Mais c'est pas vraiment une machine outil au premier sens du terme. Mais c'est l'idée, en plus rapide.

Re: Géométrie - Faire un congé entre 2 droites

Publié : mer. 01/juin/2011 18:16
par graph100
bah, du genre une commande numérique pour les maquettistes ? (une machine de stratoconception ?)
C'est sympa de savoir si on peux commander une machine comme ça avec un code pb. (sans que ce soit trop compliqué !)

Re: Géométrie - Faire un congé entre 2 droites

Publié : mer. 01/juin/2011 18:23
par Le Soldat Inconnu
Oula, c'est pas codé en PB, j'utilise juste PB pour mettre au point les algos compliqués.
C'est du Rockwell automation, RS Logix. En clair de l'automate programmable. Et la machine est une sorte de tour géant avec axe X Y sur l'outil en moteur linéaire. Et il faut asservir tous les axes pour faire des stries sur un produit.
L'axe X fait 4m de long, et monte à 2m/s en vitesse.

Re: Géométrie - Faire un congé entre 2 droites

Publié : mer. 01/juin/2011 19:53
par graph100
ça m'a l'air sympa ;) c'est de la prog concrète :mrgreen: