- Dessiner une ligne droite constituée de deux vecteurs V1(x,y) et V2(x,y)
- Placer un nombre de points sur cette ligne droite en fonction de l'intervalle entres les points.
Voila ce que ça donne avec ce code
Code : Tout sélectionner
Enumeration Window
#MainForm
EndEnumeration
Enumeration Gadgets
#Canvas
EndEnumeration
Declare.d Distance(*p.Point, *q.Point)
If OpenWindow(#MainForm, 0, 0, 1024, 768, "Une ligne droite & des points", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CanvasGadget(#Canvas, 0, 0, 1024, 768)
;Définition de deux vecteurs
V1.Point
V1\x = 100
V1\y = 100
V2.Point
V2\x = 700
V2\y = 500
;Calcul de la distance entres les deux vecteurs
Distance = Distance(V1, V2)
;Définition de l'interval entres les points à placer
Interval.f = 150
;Calcul du nombre de points à placer
CountPoint = Distance / Interval
;Dessin de la droite
StartDrawing(CanvasOutput(#Canvas))
LineXY(V1\x, V1\y, V2\x, V2\y, RGB(105, 105, 105))
;Vecteur V1 représenté par un plot
Circle(V1\x, V1\y, 5, RGB(255, 69, 0))
;Mémorisation du premier point
NextPointX.f = V1\x
NextPointY.f = V1\y
DeltaX.f = V2\x - V1\x
DeltaY.f = V2\y - V1\y
;On place les points à egales distances
For N = 1 To CountPoint
NextPointX = NextPointX + DeltaX/CountPoint
NextPointY = NextPointY + DeltaY/CountPoint
Circle(NextPointX, NextPointY, 5, RGB(218, 165, 32))
Next
StopDrawing()
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
;Distance entres deux vecteurs
Procedure.d Distance(*p.Point, *q.Point)
Protected Distance.d
;Distance horizontale
dx.d = *p\x - *q\x
;Distance verticale
dy.d = *p\y - *q\y
;Théoréme de Pythagore
Distance.d = Sqr(dx*dx + dy*dy )
ProcedureReturn Distance
EndProcedure