D
DEN
Compagnon
Bonjour à tous,
je me pose une question de géométrie :
Si on veut approcher une courbe par des arcs de cercle de manière optimale comment fait-on ?
De manière optimale j'entends : en minimisant le nombre d'arcs pour reconstruire la courbe et en restant en dessous d'une certaine borne d'erreur (distance entre la vraie courbe et son approximation).
Toutes les méthodes que j'ai trouvé jusqu'ici, supposaient de découper la courbe en morceaux, puis d'optimiser les paramètres (du cercle) sur chaque morceau et ou l'ensemble afin de minimiser l'erreur. Et donc ça ne minimise pas le nombre d'arcs, car les points sur la courbe sont prédéfinis (c'est l'input du problème)
Je voudrais faire l'inverse ou le découpage en morceaux sera le résultat de l'optimisation.
J'ai trouvé une technique pour approximer avec des droites : on trace deux courbes parallèles à celle de référence en prenant cette dernière en sandwich, l'épaisseur du sandwich étant l'erreur permise, on fait passer la droite à l'intérieur du chemin de manière à augmenter sa longueur. Ça revient à être tangent à l'un des deux côtés en fonction du signe du rayon de courbure, et se balader sur la courbe jusqu'à avoir la longueur maxi de la droite à l'intérieur, écrire un tel algorithme est parfaitement faisable. Après faut voir si ça donne vraiment la solution optimale si la première droite est la plus longue, OK, mais ça donne quoi pour les autres ... ?
Par contre pour les arc de cercle, là j'ai du mal à imaginer un algorithme qui tienne la route, je pense qu'utiliser des courbes parallèles pour limiter c'est aussi valable.
Le pourquoi de ma question : les CNC peuvent faire de l'interpolation rectiligne et circulaire , donc pour augmenter la vitesse et diminuer la taille du g-code il y a intérêt à minimiser le nombre de morceaux interconnectés, sans perdre de vue la précision (la distance par rapport à la courbe de référence doit rester bornée). Le top ça serait de pouvoir combiner arcs et droites, avec les mêmes critères d'approximation.
Peut-être que ça existe déjà en CAM, si on donne la courbe sous forme de coordonnées de points, peut-être qu'il peut la réinterpréter sous forme d'arc et de droites ?
P.S. : c'est une question ouverte, je demande pas spécialement la solution, même un ouvrage de référence me ferait avancer, ça sert à rien de réinventer la roue comme on dit ...
je me pose une question de géométrie :
Si on veut approcher une courbe par des arcs de cercle de manière optimale comment fait-on ?
De manière optimale j'entends : en minimisant le nombre d'arcs pour reconstruire la courbe et en restant en dessous d'une certaine borne d'erreur (distance entre la vraie courbe et son approximation).
Toutes les méthodes que j'ai trouvé jusqu'ici, supposaient de découper la courbe en morceaux, puis d'optimiser les paramètres (du cercle) sur chaque morceau et ou l'ensemble afin de minimiser l'erreur. Et donc ça ne minimise pas le nombre d'arcs, car les points sur la courbe sont prédéfinis (c'est l'input du problème)
Je voudrais faire l'inverse ou le découpage en morceaux sera le résultat de l'optimisation.
J'ai trouvé une technique pour approximer avec des droites : on trace deux courbes parallèles à celle de référence en prenant cette dernière en sandwich, l'épaisseur du sandwich étant l'erreur permise, on fait passer la droite à l'intérieur du chemin de manière à augmenter sa longueur. Ça revient à être tangent à l'un des deux côtés en fonction du signe du rayon de courbure, et se balader sur la courbe jusqu'à avoir la longueur maxi de la droite à l'intérieur, écrire un tel algorithme est parfaitement faisable. Après faut voir si ça donne vraiment la solution optimale si la première droite est la plus longue, OK, mais ça donne quoi pour les autres ... ?
Par contre pour les arc de cercle, là j'ai du mal à imaginer un algorithme qui tienne la route, je pense qu'utiliser des courbes parallèles pour limiter c'est aussi valable.
Le pourquoi de ma question : les CNC peuvent faire de l'interpolation rectiligne et circulaire , donc pour augmenter la vitesse et diminuer la taille du g-code il y a intérêt à minimiser le nombre de morceaux interconnectés, sans perdre de vue la précision (la distance par rapport à la courbe de référence doit rester bornée). Le top ça serait de pouvoir combiner arcs et droites, avec les mêmes critères d'approximation.
Peut-être que ça existe déjà en CAM, si on donne la courbe sous forme de coordonnées de points, peut-être qu'il peut la réinterpréter sous forme d'arc et de droites ?
P.S. : c'est une question ouverte, je demande pas spécialement la solution, même un ouvrage de référence me ferait avancer, ça sert à rien de réinventer la roue comme on dit ...