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

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

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

Message par Torp »

Merci pour le partage !
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

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

Message par graph100 »

Tu codes pour des machines outils ? (genre trajectoire outils)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message 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.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

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

Message 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é !)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message 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.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

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

Message par graph100 »

ça m'a l'air sympa ;) c'est de la prog concrète :mrgreen:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre