PB5.50b1 : trouver un point dans une courbe (vector drawing)
Publié : mar. 07/juin/2016 15:41
salut
Avec la nouvelle version de purebasic, il y a quelques nouvelles fonctions poour la lib vector drawing qui ont l'air pratique.
Je me demandais si c'était possible de trouver la position X/Y d'un point dans une courbe.
J'ai essayé ça, mais ça ne marche pas (logique, car ce n'est pas comme ça que ça fonctionne, mais je n'ai pas d'idée pour avoir le bon résultat ^^).
Si vous avez une idée, je suis preneur
.
Merci 
Avec la nouvelle version de purebasic, il y a quelques nouvelles fonctions poour la lib vector drawing qui ont l'air pratique.
Je me demandais si c'était possible de trouver la position X/Y d'un point dans une courbe.
J'ai essayé ça, mais ça ne marche pas (logique, car ce n'est pas comme ça que ça fonctionne, mais je n'ai pas d'idée pour avoir le bon résultat ^^).
Si vous avez une idée, je suis preneur

Code : Tout sélectionner
Procedure getpoint()
If StartVectorDrawing(CanvasVectorOutput(0))
x1 = GetGadgetAttribute(0, #PB_Canvas_MouseX)
y1 = GetGadgetAttribute(0, #PB_Canvas_MouseY)
AddPathBox(0, 0, 400,200)
VectorSourceColor(RGBA(255, 255, 255, 255))
FillPath()
; construct path
MovePathCursor(150, 125)
AddPathCurve(0, 270, 0, -150, 350, 180)
; get location & angle of point on the path
x = PathPointX(150+x1)
y = PathPointY(125+y1)
a = PathPointAngle(200)
; stroke the path
VectorSourceColor($FF0000FF)
StrokePath(5)
; draw a marker at the path point
AddPathCircle(x, y, 10)
VectorSourceColor($FFFF0000)
FillPath()
MovePathCursor(x, y)
AddPathLine(30*Cos(Radian(a)), 30*Sin(Radian(a)), #PB_Path_Relative)
StrokePath(5)
StopVectorDrawing()
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 400, 200)
Repeat
Event = WaitWindowEvent()
If event=#PB_Event_Gadget
If EventGadget() = 0
getpoint()
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
