Librairie BGRABitmap

Future version à tester

Re: Librairie BGRABitmap

Messagepar P.Fradin » 11 Août 2018 19:12

L'intérêt de l'héritage est que lorsque le poids est égal à 1 on peut utiliser le SimpleComputePoints de courbes quadratiques usuelles, cela évite de réécrire deux fonctions identiques. Je me penche sur les autres fonctions (mais il n'y aura pas de formules simples pour trouver les extremum, on a un polynôme de degré 2 sur un polynôme de degré 2...) , et lorsque le poids est inférieur ou égal à -1 on deux branches infinies...
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 11 Août 2018 19:42

Oh bah tu peux créer l'objet de la courbe de Bézier simple et appeler ToPoints.

Hmm et sans trouver les extremums, est-ce qu'on peut quand même déterminer les bornes?

On a deux branches infinies mais sont elles atteintes pour t entre 0 et 1?
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar P.Fradin » 11 Août 2018 21:02

Voici un exemple avec deux courbes de Bézier (pas trois !) et les deux demi-droites reliant les trois points.
CBRQ.png
CBRQ.png (8.57 Kio) Consulté 23586 fois

En rouge le poids vaut 1, c'est donc la courbe quadratique usuelle (arc de parabole).
En bleu, j'ai changé le poids en -1, le tracé se fait toujours avec t dans [0;1], dans cet exemple lorsque le poids vaut -1, le dénominateur vaut $(1-2t)^2$ et s'annule donc pour $t=\frac 12$, d'où les deux branches infinies. Lorsque le poids est inférieur à $-1$ c'est le même principe sauf c'est une branche d'hyperbole au lieu de parabole.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 11 Août 2018 23:25

Ah le dénominateur n'est pas constant. Je me disais aussi c'était trop simple.

Donc là évidemment les bornes vont être infinies. Et quand le paramètre est plus raisonnable comme -0,5 ou 0,5 ? Un espoir de calculer quelque chose?
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar P.Fradin » 12 Août 2018 09:06

Et oui, là le paramétrage est une fraction rationnelle dont le dénominateur est $B_0(t)+$poids*$B_1(t)+B_2(t)$ (qui vaut $1$ si le poids vaut $1$). Lorsque le poids est >-1 la courbe est un arc d'ellipse, de parabole ou d'hyperbole d'extrémité p1 et p2, donc dans ce cas pas de soucis, l'arc est bien borné et on peut calculer les bornes (je m'en occupe). Mais lorsque le poids est <=-1 on a deux portions d'arc non bornés (et même trois dans le cas d'une hyperbole).
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 12 Août 2018 11:47

P.Fradin a écrit:Et oui, là le paramétrage est une fraction rationnelle dont le dénominateur est $B_0(t)+$poids*$B_1(t)+B_2(t)$ (qui vaut $1$ si le poids vaut $1$). Lorsque le poids est >-1 la courbe est un arc d'ellipse, de parabole ou d'hyperbole d'extrémité p1 et p2, donc dans ce cas pas de soucis, l'arc est bien borné et on peut calculer les bornes (je m'en occupe). Mais lorsque le poids est <=-1 on a deux portions d'arc non bornés (et même trois dans le cas d'une hyperbole).

Ok. Pour les bornes infinies, je propose d'utiliser MaxLongInt comme valeur entière au niveau de TRect. Au niveau des valeur flottantes, peut-être ce serait utile de définir une (ou deux) valeur infinie, un peut comme EmptyPointF mais très grande.

Pourquoi trois portions avec une hyperbole? Avec un paramètre très négatif?
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar P.Fradin » 12 Août 2018 12:22

Lorsque le poids est strictement inférieur à -1, le dénominateur s'annule deux fois dans [0;1].
CBRQ2.png
CBRQ2.png (13.66 Kio) Consulté 23584 fois

Ici le poids vaut -2.5, à la place des deux segments qui ressemblent aux asymptotes, il devrait y avoir deux discontinuités.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar P.Fradin » 13 Août 2018 17:36

J'ai écrit les fonctions demandées (computeLength, Split, et GetBounds), j'ai mis ça dans une unité pour tester avec un projet Lazarus (minimaliste) que voici:
QSRQBC.zip
(65.87 Kio) Téléchargé 913 fois

QSRQBC = quasi standard rational quadratic Bezier curve. Je me suis contenté de trois petits exemples, toujours avec un poids plus grand que -1 (l'autre cas étant, à mon avis, pas très intéressant). En quelques lignes j'ai essayé de décrire ce type de courbe au début de l'unité.
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 20 Août 2018 20:28

Merci. Je n'ai pas été notifié du message alors je le vois que maintenant. Je regarde ça tout de suite.

Ça m'a l'air pas mal du tout. Quelques questions à propos de l'exception de poids zéro.
- Le fait d'interpréter le poids zéro comme une ellipse, est-ce que c'est cela qui n'est pas standard ?
- Le décrire avec un vecteur me semble une exception pas nécessaire. On peut définir c = f(1/2) et comme ça pas de vecteur.
- Ne serait-ce pas redondant avec ArcDef? En effet, définir une demi-ellipse peut se faire avec ArcDef. Il n'y a pas de fonction qui permette de le définir avec le point de contrôle, mais cela peut se faire.

Sinon il me semble que tu disais que l'on pouvait transformer affinement cela, ce qui à ce moment-là permettrait plus que l'ArcDef, qui ne peut être que tourné et zoomé mais pas de déformation différente selon deux axes. Ce serait l'intérêt du remplacement du poids zéro?
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar P.Fradin » 21 Août 2018 10:47

circular a écrit: Quelques questions à propos de l'exception de poids zéro.
- Le fait d'interpréter le poids zéro comme une ellipse, est-ce que c'est cela qui n'est pas standard ?

D'après la définition de Lionel Garnier (qui a étudié et développé pour sa thèse ce genre de courbes, entre autres, c'est lui qui m'a fait connaître ceci), une courbe de Bézier rationnelle quadratique revient à associer un poids à chacun des trois points, elle est quasi standard lorsque le premier et le troisième point (extrémités de la courbe) ont un poids égal à 1. Dans une courbe de Bézier rationnelle standard (la courbe classique), les trois poids sont égaux à 1.
- Le décrire avec un vecteur me semble une exception pas nécessaire. On peut définir c = f(1/2) et comme ça pas de vecteur.

Prendre $c=f(1/2)$ ? Mais la courbe ne passe pas par c ! Lorsque le poids (du second point) est plus grand que -1, non nul, et différend de 1, la courbe est un arc d'ellipse (impossible à obtenir avec une courbe standard), les tangentes aux extrémités sont les droites $(p_1c)$ et $(cp_2)$ définies par les trois points de contrôles, ce qui montre qu'on ne peut pas avoir un arc d'ellipse avec les tangentes aux extrémités qui sont parallèles, ce cas correspond à deux extrémités diamétralement opposés sur l'ellipse (mais par forcément sur un des axes principaux de l'ellipse). L'idée de Lionel (et Jean-Paul Bécar) a été d'introduire la notion de vecteur de contrôle (au lieu de point) en mettant un poids nul et avec le paramétrage :
$$ t\mapsto \frac{(1-t)^2p_1+t^2p2}{(1-t)^2+t^2}+\frac{2t(1-t)}{(1-t)^2+t^2}c$$
ils ont vérifié qu'une telle courbe est une demi-ellipse et que la tangente aux extrémités est dirigée par le vecteur c, c'est pile le cas qui manquait (en réalité ce qu'ils ont étudié est beaucoup plus général).
- Ne serait-ce pas redondant avec ArcDef? En effet, définir une demi-ellipse peut se faire avec ArcDef. Il n'y a pas de fonction qui permette de le définir avec le point de contrôle, mais cela peut se faire.

Je ne sais pas ce que fait ArcDef, mais je sais qu'une courbe de Bézier standard ne donnera jamais un arc d'ellipse.
Sinon il me semble que tu disais que l'on pouvait transformer affinement cela, ce qui à ce moment-là permettrait plus que l'ArcDef, qui ne peut être que tourné et zoomé mais pas de déformation différente selon deux axes. Ce serait l'intérêt du remplacement du poids zéro?

Un des grands intérêts des courbes de Bézier est que leur image par une application affine est encore une courbe de Bézier dont les points de contrôles sont les images des images des points de contrôles de la première. Cela vaut pour les courbes de Bézier rationnelles (puisque les points de la courbe sont des barycentres des points de contrôles), et cela vaut aussi lorsque le poids est nul à condition de transformer c (qui est un vecteur de contrôle dans cas) avec la partie linéaire seulement. Exemple:
CBRQ3.png
CBRQ3.png (12.76 Kio) Consulté 23541 fois

À gauche en rouge demi-ellipse avec les vecteurs tangents en p1 et p2 (égaux à c), en pointillés bleus la même courbe en changent c en -c.
À droite l'image de celle de gauche par la transformation affine :
$$\left\{\begin{array}{rl} x'&=1.5x+7\\y'&=x/4+y/2\end{array}\right.$$
(seuls p1, p2 et c ont été transformés avant de retracer la courbe de Bézier).
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 21 Août 2018 13:14

P.Fradin a écrit:
circular a écrit: Quelques questions à propos de l'exception de poids zéro.
- Le fait d'interpréter le poids zéro comme une ellipse, est-ce que c'est cela qui n'est pas standard ?

D'après la définition de Lionel Garnier (qui a étudié et développé pour sa thèse ce genre de courbes, entre autres, c'est lui qui m'a fait connaître ceci), une courbe de Bézier rationnelle quadratique revient à associer un poids à chacun des trois points, elle est quasi standard lorsque le premier et le troisième point (extrémités de la courbe) ont un poids égal à 1. Dans une courbe de Bézier rationnelle standard (la courbe classique), les trois poids sont égaux à 1.

Ok.

- Le décrire avec un vecteur me semble une exception pas nécessaire. On peut définir c = f(1/2) et comme ça pas de vecteur.

Prendre $c=f(1/2)$ ? Mais la courbe ne passe pas par c !

Ben je me base sur l'égalité que tu as mentionné dans l'unité: $(p_1+p_2)/2 + c = f(1/2)$
Pour éviter la confusion, on va noter c' le point de contrôlé $c' = f(1/2)$. On retrouve facilement le vecteur de contrôle $c = c' - (p_1+p_2)/2$
Donc si on a le point de contrôle c', il peut-être transformé comme les autres points, pas besoin d'exception.

Après peut-être que tu veux dire que par principe il ne faudrait pas que la courbe passe par un point de contrôle?

ils ont vérifié qu'une telle courbe est une demi-ellipse et que la tangente aux extrémités est dirigée par le vecteur c, c'est pile le cas qui manquait (en réalité ce qu'ils ont étudié est beaucoup plus général).

Je comprends que cela complète l'éventail des possibilités. C'est intéressant mais cela amène une problématique de continuité. Au fur et à mesure qu'on change le poids, la signification de la courbe change. En maths pur, on distingue bien le zéro des autres nombres, mais en informatique, une très petite valeur peut être égale à zéro, alors la discontinuité est un petit peu gênante de ce point de vue. C'est pour cela que je suggère d'utiliser une définition d'arc à la place. Cela dit se pose la question de la transformation affine des arcs.

Un des grands intérêts des courbes de Bézier est que leur image par une application affine est encore une courbe de Bézier dont les points de contrôles sont les images des images des points de contrôles de la première.

Oui cela j'ai bien compris. Et par exemple on peut décrire des arcs de cercles et après les transformer. C'est une propriété qui m'intéresse pour compléter le chemin. Cela dit ma question est plutôt de savoir si une ellipse reste une ellipse par transformation affine quelconque. Le fait que la courbe de Bézier rationnelle avec un poids zéro soit une ellipse suggère que ce serait effectivement le cas. Cela serait utile pour TBGRAPath de pouvoir décrire une ellipse juste avec trois points parce que l'on s'affranchirait alors d'avoir à spécifier le centre et un rayons selon chaque axe, ce qui faciliterait aussi les transformations affines.
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar P.Fradin » 21 Août 2018 14:44

Cela dit ma question est plutôt de savoir si une ellipse reste une ellipse par transformation affine quelconque.

Oui si les images des deux extrémités (p1 et p2) ne sont pas confondues et si le vecteur c n'est pas dans le noyau de la partie linéaire (sinon on a une conique à discriminant nul), et oui à coup sûr si la transformation est bijective.
Quant à savoir si le poids risque d'être arrondi à zéro ou non je ne suis pas sûr que cela soit un problème si l'utilisateur sait ce qu'il fait, c'est un problème intrinsèque à tout calcul en flottant en informatique, le programmeur averti le sait. Les auteurs que j'ai cités dans mon précédent message utilisent ces courbes (mais aussi les surfaces de Bézier avec points coefficientés), en images de synthèse, donc c'est une utilisation informatique. Elles ont également été intégrées dans le package pstricks (avec trois poids au lieu d'un seul) par Manuel Luque et Herbert Voss, peut-être connais-tu ce package pour LaTeX (pst-bezier), voici la doc :
pst-bezier-doc.pdf
(1.11 Mio) Téléchargé 919 fois

Je ne sais pas si la définition de la demi-ellipse est plus commode avec trois points, je ne me suis pas posé la question. Ce que je t'ai proposé est cas très particulier d'une notion plus générale de courbes de Bézier (pas forcément planes) définies par des points de contrôles et des vecteurs de contrôles, ceux ci pouvant définir des directions de tangentes ou d'asymptotes suivant les cas.
Je vais intégrer ce que je t'ai proposé dans TeXgraph, pour l'export pstricks j'utiliserai la package de Manuel, mais rien n'oblige à ce que ce soit intégré dans la libraire BGRABitmap !
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 21 Août 2018 16:41

P.Fradin a écrit:
Cela dit ma question est plutôt de savoir si une ellipse reste une ellipse par transformation affine quelconque.

Oui si les images des deux extrémités (p1 et p2) ne sont pas confondues et si le vecteur c n'est pas dans le noyau de la partie linéaire (sinon on a une conique à discriminant nul), et oui à coup sûr si la transformation est bijective.

C'est plus simple que cela. p1 et p2 sont définis, donc il est toujours possible de retrancher (p1+p2)/2.

Quant à savoir si le poids risque d'être arrondi à zéro ou non je ne suis pas sûr que cela soit un problème si l'utilisateur sait ce qu'il fait, c'est un problème intrinsèque à tout calcul en flottant en informatique, le programmeur averti le sait. Les auteurs que j'ai cités dans mon précédent message utilisent ces courbes (mais aussi les surfaces de Bézier avec points coefficientés), en images de synthèse, donc c'est une utilisation informatique. Elles ont également été intégrées dans le package pstricks (avec trois poids au lieu d'un seul) par Manuel Luque et Herbert Voss, peut-être connais-tu ce package pour LaTeX (pst-bezier), voici la doc :
pst-bezier-doc.pdf

Je vois, c'est effectivement une généralisation avec trois poids et trois points/vecteurs. Cela a sa cohérence dans le contexte. Cela dit je pense que je vais plutôt rester sur la version avec des points. Comme dit il y a déjà un objet ArcDef pour décrire des demi-ellipses.

Je ne sais pas si la définition de la demi-ellipse est plus commode avec trois points, je ne me suis pas posé la question. Ce que je t'ai proposé est cas très particulier d'une notion plus générale de courbes de Bézier (pas forcément planes) définies par des points de contrôles et des vecteurs de contrôles, ceux ci pouvant définir des directions de tangentes ou d'asymptotes suivant les cas.
Je vais intégrer ce que je t'ai proposé dans TeXgraph, pour l'export pstricks j'utiliserai la package de Manuel, mais rien n'oblige à ce que ce soit intégré dans la libraire BGRABitmap !

Oh bah je ne fais que discuter. Disons que mon objectif est de faire dans la simplicité autant que possible.

J'ai regardé pour les ellipses, en fait oui elles sont conservées par transformation affine. D'ailleurs une définition de l'ellipse est de dire que c'est un cercle auquel on a appliqué une transformation affine quelconque.

Il me semble que la définition à trois points revient en fait à celle où l'on donne le centre et les deux axes de l'ellipse. En fait ce qui coince pour le moment c'est de déterminer les axes orthogonaux à partir des axes quelconques. En effet la définition ArcDef se base sur une homothétie selon x et y (un rayon avec deux composantes x,y) suivi d'une rotation. Cela permet une certaine unicité de la définition d'une ellipse (en supposant les rayons positifs et la rotation modulo 2Pi bien sûr). Cela dit, si on applique une transformation quelconque, y a de l'équation pour retrouver les paramètres.
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar circular » 21 Août 2018 19:56

Au fait, je viens de publier une nouvelle version de BGRABitmap. J'y ai inclus l'optimisation que tu as proposé pour les courbes de Bézier cubiques.

Il y a aussi en plus plein d'espace de couleurs, la gestion du texte Unicode bidirectionnel, et des calques SVG ou autres.
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar P.Fradin » 21 Août 2018 21:06

Très bien, je vais mettre à jour.
Au fait, l'optimisation proposée pour les cubiques peut aussi s'appliquer aux quadratiques (mais elles sont peut être moins utilisées) !
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar P.Fradin » 22 Août 2018 12:05

Il est dommage que le calcul des Bézier quadratiques ne soit pas optimisé comme pour les cubiques :
Code: Tout sélectionner
function TQuadraticBezierCurve.SimpleComputePoints(AAcceptedDeviation: single;
  AIncludeFirstPoint: boolean = true): ArrayOfTPointF;
var
  t,step: single;
  i,nb: Integer;
  pA,pB : TpointF;
begin
  nb := ComputeBezierCurvePrecision(p1,c,c,p2, AAcceptedDeviation);
  if nb <= 1 then nb := 2;
  pA := p2+p1-2*c; pB := 2*(c-p1);
  if AIncludeFirstPoint then
  begin
    setlength(result,nb);
    result[0] := p1;
    result[nb-1] := p2;
    step := 1/(nb-1);
    t := 0;
    for i := 1 to nb-2 do
    begin
      t += step;
      result[i] := p1+t*(pB+t*pA) //ComputePointAt(t);
    end;
  end else
  begin
    setlength(result,nb-1);
    result[nb-2] := p2;
    step := 1/(nb-1);
    t := 0;
    for i := 0 to nb-3 do
    begin
      t += step;
      result[i] := p1+t*(pB+t*pA) //ComputePointAt(t);
    end;
  end;
end;

Sinon j'ai une question concernant la documentation générée automatiquement, j'obtiens des fichiers txt avec des fragments d'html mais non affichable en l'état, j'imagine qu'ils doivent être inclus dans autre chose, on en fait quoi ?
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 22 Août 2018 13:23

Voilà j'ai remplacé la fonction sur la branche dev.

La génération de doc est au format wiki. Voir par exemple:
http://wiki.freepascal.org/BGRABitmap_Geometry_types
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar circular » 25 Oct 2018 07:50

Bonjour bonjour,

Voilà une nouvelle version de BGRABitmap 9.9.1
https://github.com/bgrabitmap/bgrabitmap/releases

Il y a l'optimisation dont on parlait pour les courbe de Bézier simples et il y a aussi les courbes de Bézier rationnelles. Comme expliqué précédemment, je n'ai pas fait de cas spécial pour le poids égal à zéro.

J'ai fait un calcul progressif, prenant en compte la déviation et aussi les extremums, afin d'arriver à la précision voulue. Aussi comme les branches peuvent être infinies, j'ai ajouté un paramètre pour définir la taille de la surface. Ainsi les branches sont calculées jusqu'à ce qu'elles dépassent de ce rectangle.

Il y a un programme d'exemple test/rationalbezier

Image

A partir de là, on peut concaténer les deux bouts et on obtient la section conique complète. Je me demande alors quelle serait la correspondance entre une conique et cette courbe de Bézier rationnelle. Le poids me semble un peu similaire à l'excentricité mais pas tout à fait identique. Quelle serait par exemple une méthode pour avoir la courbe de Bézier rationnelle d'un hyperbole d'excentricité 2 ?
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Re: Librairie BGRABitmap

Messagepar P.Fradin » 27 Oct 2018 17:01

Bonjour,

Et bravo pour ce travail !
Pour répondre à ta question sur l'hyperbole, il faut se mettre d'accord sur comment on définit celle-ci, l'excentricité ne suffit évidemment pas. Disons qu'on définit une hyperbole à partir de son centre O, d'un sommet S et son excentricité e, alors on peut tracer l'hyperbole avec deux courbes de Bézier rationnelles, en voici un exemple (en rouge l'hyperbole avec le paramétrage classique, en vert et en bleu le tracé des courbes de Bézier avec les trois points ):
CBRQ4.png
CBRQ4.png (15.51 Kio) Consulté 22740 fois

et voici le code correspondant, j'ai choisi deux points P0 et P2 symétriques par rapport au foyer, ce qui permet de déterminer simplement P1 (il est pile sur la directrice) et le poids, ce qui est remarquable c'est que le poids est dans ce cas égal à l'excentricité ! C'est du code TeXgraph, je n'ai pas pris le temps de le traduire en Pascal :
Code: Tout sélectionner
[
view(-5,5,-5,5),Marges(0,0,0,0), size(8),
O:=0, //centre
S:=2, //sommet
ex:=1.5, //excentricité
a:=abs(S-O), u:=(S-O)/a, v:=i*u, c:=ex*a, y:=a*(ex^2-1),
Droite(0,O+u), Droite(O,O+v), //axes
P0:= O+c*u+y*v, //début
P2:= O+c*u-y*v, //contrôle
P1:=O+a^2/c*u, //fin
w:=ex, // ici poids = excentricité !
Color:=red, Width:=24,
Parametric(a*ch(t)*u+sqrt(c^2-a^2)*sh(t)*v), Parametric(-a*ch(t)*u+sqrt(c^2-a^2)*sh(t)*v),//paramétrage classique
Width:=8, Color:=blue,
CBRQ(P0,P1,P2,w), //courbe de Bézier rationnelle, petit arc (connexe)
Color:= green,
CBRQ(P0,P1,P2,-w),//courbe de Bézier rationnelle, arc non connexe
Color:=black, Width:=4,LabelDot(O,"$O$","NO",1), LabelDot(S,"$S$","NE",1),
Color:=forestgreen, //points de construction
LabelDot(P0,"$P_0$","NO",1), LabelDot(P1,"$P_1$","NO",1),
LabelDot(P2,"$P_2$","SO",1), LabelDot(O+c*u,"Foyer","NE",1),
Ligne([P0,P1,P2],1)
]
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1835
Inscription: 29 Oct 2008 15:04

Re: Librairie BGRABitmap

Messagepar circular » 29 Oct 2018 13:15

Ok donc si on choisit bien les points, on peut avoir le poids égal à l'excentricité, cela dit, si on change l'excentricité, cela ne revient pas juste à changer le poids.

D'un point de vue calcul, je me demande si la courbe de Bézier rationnelle est plus lente ou plus rapide qu'avec la formule de l'hyperbole avec les sinus hyperboliques. Y a quand même des calculs d'exponentielles dans les trucs hyperboliques alors que dans la courbe de Bézier rationnelle, y a juste une division.
circular
 
Messages: 24
Inscription: 20 Juin 2011 16:24

Précédent

Revenir vers Version intermédiaire

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron