Rod's function does not work (the thing produced is not even symmetrical).
Here is one that produces a correct approximation to an ellipse:
function pdf_ellipse ($pdfobj,$x,$y,$width,$height) {
// Function to draw an ellipse inscribed in a rectangle
// described by lower left (x,y) with width and height.
$fac = (4*sqrt(2)-4)/3;
$dx = $width*(1-$fac)/2;
$dy = $height*(1-$fac)/2;
pdf_moveto($pdfobj, $x,$y+$height/2);
pdf_curveto($pdfobj, $x,$y+$height-$dy, $x+$dx,$y+$height, $x+$width/2,$y+$height);
pdf_curveto($pdfobj, $x+$width-$dx,$y+$height, $x+$width,$y+$height-$dy, $x+$width,$y+$height/2);
pdf_curveto($pdfobj, $x+$width,$y+$dy, $x+$width-$dx,$y, $x+$width/2,$y);
pdf_curveto($pdfobj, $x+$dx,$y, $x,$y+$dy, $x,$y+$height/2);
}
PDF_curveto
(PHP 4, PECL pdflib >= 1.0.0)
PDF_curveto — Dessine une courbe de Bezier
Description
bool PDF_curveto
( resource $p
, float $x1
, float $y1
, float $x2
, float $y2
, float $x3
, float $y3
)
pdf_curveto() dessine une courbe de Bezier à partir du point courant, et en utilisant trois points de contrôle. Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.
rune at zedeler dot dk
09-Mar-2005 07:51
rod-php at thecomplex dot com
01-Oct-2002 10:15
function pdf_ellipse_inscribed ($pdfobj,$x,$y,$width,$height) {
// Function to draw an ellipse inscribed in a rectangle
// described by lower left (x,y) with width and height.
pdf_moveto($pdfobj, $x,$y+$height/2);
pdf_curveto($pdfobj, $x,$y+$height/2,$x,$y+$height,$x+$width/2,$y+$height);
pdf_curveto($pdfobj, $x+$width/2,$y+$height,$x+$width,$y+$height,$x+$width,$y+$height/2);
pdf_curveto($pdfobj, $x+$width,$y+$height/2,$x+$width,$y,$x+$width/2,$y);
pdf_curveto($pdfobj, $x+$width/2,$y,$x,$y,$x,$y+$height/2);
}
