Page 1 sur 1
[RESOLU] Point le plus proche
Publié : mar. 19/juin/2012 16:47
par falsam
Je coince sur un problème qui pourtant me paraissait simple !!!!
Connaissant la position (X,Y) d'un point sur un grid ainsi que l'écartement entres deux points sur le grid, quel serait la règle pour connaitre le point le plus proche de celui-çi.
Exemple:
Distance entre deux points sur le grid = 12
Un box que je dessine en X=74, Y=46
Comment savoir que mon code doit le positionner en X=72 et Y=48 ?
Re: Point le plus proche
Publié : mar. 19/juin/2012 17:34
par Ar-S
Pourquoi X=72 ? ou alors pourquoi grid = 12
y'a pas une coquille ? je pense qui si.
Sinon pour l'écart si tu mets en structure tes dimensions tu peux bien connaitre tes positions en Ybis
Code : Tout sélectionner
Global ecart.i = 2
structure blocPos
Y = 46
Ybis = Y-ecart
enstructure
Re: Point le plus proche
Publié : mar. 19/juin/2012 18:23
par falsam
Ar-S a écrit :Pourquoi X=72 ? ou alors pourquoi grid = 12
y'a pas une coquille ? je pense qui si.
Non non, pas de coquille.
Je voudrais améliorer mon code Mindmap.
http://www.purebasic.fr/french/viewtopi ... =6&t=12885
Quand je place une entité, je voudrais que le sommet Haut/Gauche (X,Y) se place automatiquement sur le point le plus proche.
Pour cela j'ai comme paramètre l'écartement entre deux points sur le grid (Exemple 12 qui se fixe dans les paramètres de mon code minmap) et je connais aussi les coordonnées X, Y de l'entité (Exemple 74, 46).
L'écart entre les point des grid étant de 12, les chiffres les plus proches pour les coordonnées de cette éntité (74,46) sera donc (72,48).
Je préfère éviter de passer par une structure.
Re: Point le plus proche
Publié : mar. 19/juin/2012 18:30
par blendman
comme ça pitet (pas sûr ^^) :
Code : Tout sélectionner
Procedure pointProche(x,grid=12)
x = Round(X/grid,#PB_Round_Nearest)*grid
ProcedureReturn x
EndProcedure
x = pointProche(74)
y = pointProche(48)
Debug Str(x)+"/"+Str(y)
à priori ça marche je crois

Re: Point le plus proche
Publié : mar. 19/juin/2012 18:48
par Le Soldat Inconnu
il y a plus simple encore
Code : Tout sélectionner
Procedure pointProche(x, grid = 12)
x = x / grid
x * grid
ProcedureReturn x
EndProcedure
x = pointProche(74)
y = pointProche(48)
Debug Str(x) + "/" + Str(y)
Re: Point le plus proche
Publié : mar. 19/juin/2012 19:16
par falsam
Yeahhhhhh merci à vous deux. la solution de blendman est la solution car il me permet de savoir si c'est le point gauche ou droite qui est le plus proche:) La tienne LSI ne me permet que de connaitre le point gauche.
Dans tous les cas encore une fois merci à vous deux.