jpicedt.graphic.util
Class MultiCurveToArc
java.lang.Object
jpicedt.graphic.util.MultiCurveToArc
public class MultiCurveToArc
- extends Object
Classe permettant d'approximer une AbstractCurve en un PicGroup de
segments de droite (PicMultiCurve polygonale) et d'arcs de cercle
(PicEllipse).
La methode qui fait le boulot est convert.
Il est
important de faire la distinction entre courbe de Bézier (élémentaire) et
chaîne de courbe de Bézier (également appelée courbe de Bézier
extensible). Dans une courbe de Bézier (élémentaire) on n'a que 4 points
de contrôles.
Le principe de fonctionnement est le suivant: on fait une
approximation infinitésimale (ie d'étendue initialement nulle) de la 1ère
courbe de Bézier de la chaîne au voisinage du point de départ de cette
courbe, puis on essaie d'étendre le plus possible cette approximation
tout en respectant la contrainte qu'on ne doit pas s'éloigner trop de la
chaîne de courbe de Bézier. Lorsque on ne peut plus étendre, on repart du
point final de la dernière approximation, et ainsi de
suite.
L'extension d'une approximation est elle-même un processus
itératif, on essaie d'étendre le plus possible en gardant la même
position pour le centre de l'arc de cercle approximant, puis on regarde
si en ajustant ce centre on ne peut pas relâcher les contraintes, et si
oui on recommence.
- Since:
- jPicEdt 1.6
- Author:
- Vincent Belaïche
Method Summary |
static PicGroup |
convert(AbstractCurve multiCurve,
double tol,
double maxRadius,
int firstCtlPtIndex,
int lastCtlPtIndex)
Méthode permettant de convertir une chaîne de courbes cubiques de
Bézier en une chaîne d'arc de cercle et de segment de droite (chaînés
entre eux par un conteneur PicGroup). |
static void |
main(String[] argv)
fonction principale, ça ne sert qu'à faire un petit test |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
MultiCurveToArc
public MultiCurveToArc()
convert
public static PicGroup convert(AbstractCurve multiCurve,
double tol,
double maxRadius,
int firstCtlPtIndex,
int lastCtlPtIndex)
- Méthode permettant de convertir une chaîne de courbes cubiques de
Bézier en une chaîne d'arc de cercle et de segment de droite (chaînés
entre eux par un conteneur PicGroup).
- Parameters:
multiCurve
- la chaîne de courbes cubiques de Bézier dont une
partie est à convertir en chaîne d'arc de de segment de droites.tol
- tolérance sur les distances, plus c'est petit plus
l'apprixation par arc&segments de droite sera proche de la courbe
originale, mais aussi plus la chaîne d'arcs&segments aura de
composantes.maxRadius
- plus c'est grand et plus on accepte d'avoir des
cercles de grand rayon (les arcs de cercles dont le rayon est supérieur
ou égale à maxRadius sont remplacé par des segments de droite).firstCtlPtIndex
- index du premier point de contrôle de la partie
de la chaîne de courbes cubiques de Bézier que l'on veut approximer. Ce
point doit être un point de subdivision.lastCtlPtIndex
- index du dernier point de contrôle de la partie
de la chaîne de courbes cubiques de Bézier que l'on veut approximer. Ce
point doit être un point de subdivision.
- Returns:
- le résultat de la conversion, c'est à dire un PicGroup dont les
éléments sont soit des PicEllipse arc de cercle, soit des
PicMultiCurves lignes polygonales.
- Since:
- jPicEdt 1.6
main
public static void main(String[] argv)
- fonction principale, ça ne sert qu'à faire un petit test
- Since:
- jPicEdt 1.6
Submit a bug : syd@jpicedt.org