protected function _Arc(
        $xc,
        $yc,
        $rx,
        $ry,
        $angleBegin,
        $angleEnd,
        $direction = true,
        $drawFirst = true,
        $trans=false)
    {
        // if we want the no trigo direction : add 2PI to the begin angle, to invert the direction
        if (!$direction) $angleBegin+= M_PI*2.;

        // cut in segment to convert in berize curv
        $dt = ($angleEnd - $angleBegin)/self::ARC_NB_SEGMENT;
        $dtm = $dt/3;

        // center of the arc
        $x0 = $xc; $y0 = $yc;

        // calculing the first point
        $t1 = $angleBegin;
        $a0 = $x0 + ($rx * cos($t1));
        $b0 = $y0 + ($ry * sin($t1));
        $c0 = -$rx * sin($t1);
        $d0 = $ry * cos($t1);

        // if drawFirst => draw the first point
        if ($drawFirst) $this->_Point($a0, $b0, $trans);

        // foreach segment
        for ($i = 1; $i <= self::ARC_NB_SEGMENT; $i++) {
            // calculing the next point
            $t1 = ($i * $dt)+$angleBegin;
            $a1 = $x0 + ($rx * cos($t1));
            $b1 = $y0 + ($ry * sin($t1));
            $c1 = -$rx * sin($t1);
            $d1 = $ry * cos($t1);

            // make the bezier curv
            $this->_Curve(
                $a0 + ($c0 * $dtm), $b0 + ($d0 * $dtm),
                $a1 - ($c1 * $dtm), $b1 - ($d1 * $dtm),
                $a1, $b1,
                $trans
            );

            // save the point
            $a0 = $a1;
            $b0 = $b1;
            $c0 = $c1;
            $d0 = $d1;
        }
    }
protected function _Arc(
        $xc,
        $yc,
        $rx,
        $ry,
        $angleBegin,
        $angleEnd,
        $direction = true,
        $drawFirst = true,
        $trans=false)
    {
        // if we want the no trigo direction : add 2PI to the begin angle, to invert the direction
        if (!$direction) $angleBegin+= M_PI*2.;

        // cut in segment to convert in berize curv
        $dt = ($angleEnd - $angleBegin)/self::ARC_NB_SEGMENT;
        $dtm = $dt/3;

        // center of the arc
        $x0 = $xc; $y0 = $yc;

        // calculing the first point
        $t1 = $angleBegin;
        $a0 = $x0 + ($rx * cos($t1));
        $b0 = $y0 + ($ry * sin($t1));
        $c0 = -$rx * sin($t1);
        $d0 = $ry * cos($t1);

        // if drawFirst => draw the first point
        if ($drawFirst) $this->_Point($a0, $b0, $trans);

        // foreach segment
        for ($i = 1; $i <= self::ARC_NB_SEGMENT; $i++) {
            // calculing the next point
            $t1 = ($i * $dt)+$angleBegin;
            $a1 = $x0 + ($rx * cos($t1));
            $b1 = $y0 + ($ry * sin($t1));
            $c1 = -$rx * sin($t1);
            $d1 = $ry * cos($t1);

            // make the bezier curv
            $this->_Curve(
                $a0 + ($c0 * $dtm), $b0 + ($d0 * $dtm),
                $a1 - ($c1 * $dtm), $b1 - ($d1 * $dtm),
                $a1, $b1,
                $trans
            );

            // save the point
            $a0 = $a1;
            $b0 = $b1;
            $c0 = $c1;
            $d0 = $d1;
        }
    }
protected function _Arc ( $ xc , $ yc , $ rx , $ ry , $ angleBegin , $ angleEnd , $ direction = true , $ drawFirst = true , $ trans = false ) { // if we want the no trigo direction : add 2PI to the begin angle, to invert the direction if ( ! $ direction ) $ angleBegin += M_PI * 2. ; // cut in segment to convert in berize curv $ dt = ( $ angleEnd - $ angleBegin ) / self :: ARC_NB_SEGMENT ; $ dtm = $ dt / 3 ; // center of the arc $ x0 = $ xc ; $ y0 = $ yc ; // calculing the first point $ t1 = $ angleBegin ; $ a0 = $ x0 + ( $ rx * cos ( $ t1 ) ) ; $ b0 = $ y0 + ( $ ry * sin ( $ t1 ) ) ; $ c0 = - $ rx * sin ( $ t1 ) ; $ d0 = $ ry * cos ( $ t1 ) ; // if drawFirst => draw the first point if ( $ drawFirst ) $ this -> _Point ( $ a0 , $ b0 , $ trans ) ; // foreach segment for ( $ i = 1 ; $ i <= self :: ARC_NB_SEGMENT ; $ i ++ ) { // calculing the next point $ t1 = ( $ i * $ dt ) + $ angleBegin ; $ a1 = $ x0 + ( $ rx * cos ( $ t1 ) ) ; $ b1 = $ y0 + ( $ ry * sin ( $ t1 ) ) ; $ c1 = - $ rx * sin ( $ t1 ) ; $ d1 = $ ry * cos ( $ t1 ) ; // make the bezier curv $ this -> _Curve ( $ a0 + ( $ c0 * $ dtm ) , $ b0 + ( $ d0 * $ dtm ) , $ a1 - ( $ c1 * $ dtm ) , $ b1 - ( $ d1 * $ dtm ) , $ a1 , $ b1 , $ trans ) ; // save the point $ a0 = $ a1 ; $ b0 = $ b1 ; $ c0 = $ c1 ; $ d0 = $ d1 ; } }
SVG - make a arc with Center, Radius, from angleBegin to angleEnd

@param float $xc
@param float $yc
@param float $rx
@param float $ry
@param float $angleBegin in radians
@param float $angleEng in radians
@param boolean $direction
@param boolean $drawFirst, true => add the first point
@param boolean $trans apply transformation
@access protected
SVG - make a arc with Center Radius from angleBegin to angleEnd