http://www.jpicedt.org

jpicedt.graphic.util
Class MultiCurveToArc

java.lang.Object
  extended by 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

Constructor Summary
MultiCurveToArc()
           
 
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
 

Constructor Detail

MultiCurveToArc

public MultiCurveToArc()
Method Detail

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

http://www.jpicedt.org

Submit a bug : syd@jpicedt.org