Page 1 sur 1

Une ligne droite et des points à placer

Publié : mer. 24/juin/2015 14:58
par falsam
Objectif:
- 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
@Blendman: Couplé au code de ta demande sur un autre post à mon avis ça doit fonctionner. je vais me remettre à ce fameux code.....

Re: Une ligne droite et des points à placer

Publié : jeu. 25/juin/2015 7:37
par microdevweb
Hum intéressant, cela va me servir pour la liaison de mon système de node.

Merci falsam