Melem je suis un peu partie comme tu le decris mais avec cette fonction comme evaluation de la distance entre 2 points.
function Eval (Pt1, Pt2){
abs((Pt2.X - Pt1.X) * Cx) +
abs((Pt2.Y - Pt1.Y) * Cy) +
abs((Pt2.Z - Pt1.Z)* Cz)
}
Cx, Cy et Cz sont des facteur de ponderations pour favoriser un axe plutot qu'un autre. J'ai pris Cx=10000, Cy=100 et Cz=1.
J'ai simplifié le problème en ajoutant les points par plan 2D. ils sont definis par deux pts. On ajoute plan par plan (soit XY, XZ ou YZ).
lors de l'ajoue d'un plan j'ajoute à ma liste les points un par un comme ceci (excusez c'est en Java mais ca se lit bien):
public void Add_planeXY(Point2D Pt0, Point2D Ptf, Point2D Delta, double Z0){
for (double x=Math.min(Pt0.X, Ptf.X); x<=Math.max(Pt0.X, Ptf.X); x+=Math.abs(Delta.X)){
for (double z=Math.min(Pt0.Y, Ptf.Y); z<=Math.max(Pt0.Y, Ptf.Y); z+=Math.abs(Delta.Y)){
List_pts.Add_point(x, Y0, Correction_planarity(z, x, Y0));
}
}
}
La fonction Add_point parcourt la liste et insert le point si elle trouve que le point et plus proche que sont suivant grace à la fonction d'evaluation.
bon entre deux plans saisis, le deplacement peut être long mais bon je rejete la faute sur l'utilisateur pour qu'il choisisse bien ses plans 
Les premiers tests sont ok et la procedure est super rapide.
Si on avait mieux à proposer je suis toujours preneur.
Partager