{"id":180659,"date":"2013-05-23T14:24:03","date_gmt":"2013-05-23T10:24:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=180659"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=180659","title":{"rendered":"<span class=\"post_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432 SVG \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Raphael \u0438 PHP<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u043c html \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u044a\u0451\u043c\u043d\u0443\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043d\u0430\u043c JS \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438\u0437 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u044b \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0441\u0435\u043b\u0438 \u043d\u0430 JS \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/raphaeljs.com\/\">Raphael<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0432\u043e \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445. \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/beybegi.com\/pics\/habr\/circle.jpg\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432 SVG \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Raphael \u0438 PHP\"\/><\/p>\n<p>  \u0418\u0442\u0430\u043a. \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Raphael \u0438 PHP \u043a\u0440\u0443\u0433\u043e\u0432\u0443\u044e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 SVG, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438. \u041c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0441\u0435\u043c \u0442\u0435\u043c, \u043a\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0441\u0438\u043b \u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<br \/>  <a name=\"habracut\"><\/a><br \/>  <u>\u0424\u0430\u0439\u043b circle.php:<\/u><\/p>\n<pre><code class=\"php\">&lt;?php  \/\/ \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c, \/\/ \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b \u0438 \u0432\u044b\u0441\u043e\u0442\u044b \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b  function start_paper($id, $width, $height) {    return 'var r = Raphael(&quot;' .$id .'&quot;, ' .$width .', ' .$height .');';  }  \/\/ \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b  function paper_circle_chart($params) {    \/\/ \u0440\u0430\u0441\u0447\u0451\u0442 \u0440\u0430\u0434\u0438\u0443\u0441\u0430 &quot;\u0438\u0437\u043b\u043e\u043c\u0430&quot; \u043a\u0430\u043a \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0442\u043e\u043b\u0449\u0438\u043d\u044b \u0441\u0435\u043a\u0442\u043e\u0440\u0430   \/\/ \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f 3D \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0432\u044b\u043f\u0443\u043a\u043b\u043e\u0441\u0442\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b    $shadow_width = floor(($params['radius']-$params['inradius'])*0.47);   $pradius = $params['radius'] - $shadow_width;    \/\/ \u0440\u0430\u0434\u0438\u0443\u0441 \u0432\u044b\u043d\u043e\u0441\u0430 \u043b\u0438\u043d\u0438\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438    $outradius = $params['radius'] + $params['text_radius'];    \/\/ \u0441\u0443\u043c\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445    $total = array_sum($params['data']);    $i = 0;     $prev = 0;     $fangel = 0;     $code = '';   $pcode = '';   $pline = '';   $ptext = '';   $pstext = '';   $center = '';   $begin = true;    \/\/ \u0440\u0438\u0441\u0443\u0435\u043c \u0441\u0435\u043a\u0442\u043e\u0440\u044b \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0446\u0438\u043a\u043b\u0435    foreach ($params['data'] as $k =&gt; $v) {      \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430      $color = $params['colors'][$i];      \/\/ \u0435\u0441\u043b\u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043c\u0438\u043c\u043e      if ($v == 0) {       $i++;       continue;       }      \/\/ \u0435\u0441\u043b\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u043a\u0442\u043e\u0440\u0430 - \u0440\u0438\u0441\u0443\u0435\u043c \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u043a\u0440\u0443\u0433      elseif ($v == $total) {       $pend = deg2rad(45);       $code = '           r.circle(' .$params['centerx'] .', ' .$params['centery'] .', ' .$params['radius'] .').attr({&quot;fill&quot;: &quot;' .$color .'&quot;})';       if (count($params['texts'])) {         $dxc = round($params['centerx'] + $pradius * sin($pend), 2);         $dyc = round($params['centery'] - $pradius * cos($pend), 2);         $dxc1 = round($params['centerx'] + $outradius * sin($pend), 2);         $dyc1 = round($params['centery'] - $outradius * cos($pend), 2);         $dxc2 = $dxc1 + $params['text_width'];         $dxc3 = $dxc1 + round($params['text_width']\/2, 2);         $dyc2 = $dyc1 - $params['text_minus'];         $dyc3 = $dyc1 + $params['text_plus'];         $pcode .= '           r.circle(' .$dxc .', ' .$dyc .', ' .$params['point_radius'] .')';         $pline .= '         r.path(&quot;M'. $dxc .','. $dyc .' L'. $dxc1 .','. $dyc1 .' L'. $dxc2 .','. $dyc1 .'&quot;)';         $ptext .= '           r.text(' .$dxc3 .', ' .$dyc2 .', &quot;100 %&quot;)';         $pstext .= '           r.text(' .$dxc3 .', ' .$dyc3 .', &quot;' .$params['texts'][$i] .'&quot;)';         }       }      \/\/ \u0438\u043d\u0430\u0447\u0435 - \u0440\u0438\u0441\u0443\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0435\u043a\u0442\u043e\u0440      else {       $percent = $v \/ $total;         $angel = 360 * $percent;         $rad = deg2rad($angel);         $end = $prev + $rad;       $pend = $prev + $rad\/2;       $dx = round($params['centerx'] + $params['radius'] * sin($prev), 2);       $dy = round($params['centery'] - $params['radius'] * cos($prev), 2);       $dxp = round($params['centerx'] + $params['radius'] * sin($end), 2);         $dyp = round($params['centery'] - $params['radius'] * cos($end), 2);         if ($percent &gt; 0.5) $sec = 1;       else $sec = 0;       if (!$begin) $code .= ',';       $code .= '           r.path(&quot;M' .$params['centerx'] .',' .$params['centery'] .' L' .$dx .',' .$dy .' A' .$params['radius'] .',' .$params['radius'] .' 0 ' .$sec .',1 ' .$dxp .',' .$dyp .' z&quot;).attr({&quot;fill&quot;: &quot;' .$color .'&quot;})';       if (count($params['texts'])) {         $dxc = round($params['centerx'] + $pradius * sin($pend), 2);         $dyc = round($params['centery'] - $pradius * cos($pend), 2);         $dxc1 = round($params['centerx'] + $outradius * sin($pend), 2);         $dyc1 = round($params['centery'] - $outradius * cos($pend), 2);         if (($fangel + $angel\/2) &gt; 180) {           $dxc2 = $dxc1 - $params['text_width'];           $dxc3 = $dxc1 - round($params['text_width']\/2, 2);           }         else {           $dxc2 = $dxc1 + $params['text_width'];           $dxc3 = $dxc1 + round($params['text_width']\/2, 2);           }         $dyc2 = $dyc1 - $params['text_minus'];         $dyc3 = $dyc1 + $params['text_plus'];         if (!$begin) {           $pcode .= ',';           $ptext .= ',';           $pstext .= ',';           $pline .= ',';           }         $pcode .= '           r.circle(' .$dxc .', ' .$dyc .', ' .$params['point_radius'] .')';         $pline .= '         r.path(&quot;M'. $dxc .','. $dyc .' L'. $dxc1 .','. $dyc1 .' L'. $dxc2 .','. $dyc1 .'&quot;)';         $ptext .= '           r.text(' .$dxc3 .', ' .$dyc2 .', &quot;' .round($percent * 100) .' %&quot;)';         $pstext .= '           r.text(' .$dxc3 .', ' .$dyc3 .', &quot;' .$params['texts'][$i] .'&quot;)';         }       $i++;       $begin = false;       $prev = $end;       $fangel += $angel;         }     }     \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 &quot;\u043a\u043e\u043d\u0442\u0443\u0440&quot; \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0434\u0438\u0430\u0433\u0440\u043c\u043c\u044b    if ($code) $code = '         var st = r.set();         st.push(' .$code .'           );         st.attr({&quot;stroke&quot;: &quot;none&quot;});';    \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 &quot;\u0446\u0432\u0435\u0442&quot; \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043b\u0438\u043d\u0438\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438    if ($pline) $pline = '         var st = r.set();         st.push(' .$pline .'           );         st.attr({&quot;stroke&quot;: &quot;' .$params['line_color'] .'&quot;});';    \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b &quot;\u043a\u043e\u043d\u0442\u0443\u0440&quot; \u0438 &quot;\u0446\u0432\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u043a\u0438&quot; \u0434\u043b\u044f \u043f\u043b\u0430\u0448\u0435\u043a \u0432\u0441\u0435\u0445 \u043b\u0438\u043d\u0438\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438    if ($pcode) $pcode = '         var st = r.set();         st.push(' .$pcode .'           );         st.attr({&quot;fill&quot;: &quot;' .$params['text_color'] .'&quot;, &quot;stroke&quot;: &quot;' .$params['stroke_color'] .'&quot;});';    \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b &quot;\u0448\u0440\u0438\u0444\u0442&quot;, &quot;\u0440\u0430\u0437\u043c\u0435\u0440&quot; \u0438 &quot;\u0446\u0432\u0435\u0442&quot; \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043d\u0430\u0434 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438    if ($ptext) $ptext = '         var st = r.set();         st.push(' .$ptext .'           );         st.attr({&quot;font-family&quot;: &quot;' .$params['font'] .'&quot;, &quot;font-size&quot;: &quot;' .$params['text_name'] .'&quot;, &quot;fill&quot;: &quot;' .$params['text_color'] .'&quot;, &quot;cursor&quot;: &quot;default&quot;});';    \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b &quot;\u0448\u0440\u0438\u0444\u0442&quot;, &quot;\u0440\u0430\u0437\u043c\u0435\u0440&quot; \u0438 &quot;\u0446\u0432\u0435\u0442&quot; \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043f\u043e\u0434 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438    if ($pstext) $pstext = '         var st = r.set();         st.push(' .$pstext .'           );         st.attr({&quot;font-family&quot;: &quot;' .$params['font'] .'&quot;, &quot;font-size&quot;: &quot;' .$params['text_small'] .'&quot;, &quot;fill&quot;: &quot;' .$params['text_color'] .'&quot;, &quot;cursor&quot;: &quot;default&quot;});';    \/\/ \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0446\u0435\u043d\u0442\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0442\u0435\u043a\u0441\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e    $inradius = '';   if ($params['inradius'] &gt; 0) {     $inradius = '         r.circle(' .$params['centerx'] .', ' .$params['centery'] .', ' .$params['inradius'] .').attr({&quot;fill&quot;: &quot;' .$params['center_text_back'] .'&quot;, &quot;stroke&quot;: &quot;none&quot;});';     if ($params['shadow']) $inradius .= '         r.circle(' .$params['centerx'] .', ' .$params['centery'] .', ' .($params['radius']-$shadow_width+floor($shadow_width\/2)) .').attr({&quot;fill&quot;: &quot;none&quot;, &quot;stroke&quot;: &quot;#FFFFFF&quot;, &quot;stroke-width&quot;: &quot;' .$shadow_width .'&quot;, &quot;stroke-opacity&quot;: &quot;0.15&quot;});';     if ($params['center_text']) {       $center = '         r.text(' .$params['centerx'] .', ' .$params['centery'] .', &quot;' .$params['center_text'] .'&quot;).attr({&quot;font-family&quot;: &quot;' .$params['font'] .'&quot;, &quot;font-size&quot;: &quot;' .$params['center_text_size'] .'&quot;, &quot;fill&quot;: &quot;' .$params['center_text_color'] .'&quot;, &quot;cursor&quot;: &quot;default&quot;});';       }     }    return $code .$inradius .$pline .$pcode .$ptext .$pstext .$center;  }  ?&gt;  <\/code><\/pre>\n<p>  <u>\u0424\u0430\u0439\u043b test.php:<\/u><\/p>\n<pre><code class=\"php\">&lt;?php  include(&quot;circle.php&quot;);  $params = array (\t\t\t\t\t\/\/ \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b    'font' =&gt; 'PT Sans, Tahoma',\t\t\t\t\/\/ \u0448\u0440\u0438\u0444\u0442    'text_color' =&gt; '#212121',\t\t\t\t\/\/ \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430   'line_color' =&gt; '#494949',\t\t\t\t\/\/ \u0446\u0432\u0435\u0442 \u043b\u0438\u043d\u0438\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438   'text_width' =&gt; 40,\t\t\t\t\t\/\/ \u0448\u0438\u0440\u0438\u043d\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043b\u0438\u043d\u0438\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438   'text_radius' =&gt; 14,\t\t\t\t\t\/\/ \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043b\u0438\u043d\u0438\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438 \u043e\u0442 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b   'point_radius' =&gt; 3,\t\t\t\t\t\/\/ \u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043b\u0430\u0448\u043a\u0438 \u043b\u0438\u043d\u0438\u0438 \u0432\u044b\u043d\u043e\u0441\u043a\u0438 ( \u043a\u0440\u0443\u0433 \u0432 \u043c\u0435\u0441\u0442\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0438 \u0432\u044b\u043d\u043e\u0441\u043a\u0438 \u0441 \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 )   'stroke_color' =&gt; '#EFEFEF',\t\t\t\t\/\/ \u0446\u0432\u0435\u0442 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u043f\u043b\u0430\u0448\u043a\u0438   'text_name' =&gt; 13,\t\t\t\t\t\/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430\u0434 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438   'text_small' =&gt; 11,\t\t\t\t\t\/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u043e\u0434 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438   'text_minus' =&gt; 10,\t\t\t\t\t\/\/ \u043e\u0442\u0441\u0442\u0443\u043f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u0432\u0435\u0440\u0445 \u043d\u0430\u0434 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438   'text_plus' =&gt; 8,\t\t\t\t\t\/\/ \u043e\u0442\u0441\u0442\u0443\u043f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u043d\u0438\u0437 \u043f\u043e\u0434 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438    'centerx' =&gt; 100,\t\t\t\t\t\/\/ \u0446\u0435\u043d\u0442\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u043e\u0441\u0438 x   'centery' =&gt; 100,\t\t\t\t\t\/\/ \u0446\u0435\u043d\u0442\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u043e\u0441\u0438 y   'radius' =&gt; 42,\t\t\t\t\t\/\/ \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b    'inradius' =&gt; 19,\t\t\t\t\t\/\/ \u0440\u0430\u0434\u0438\u0443\u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u0430   'center_text_back' =&gt; '90-#e7e7e7-#ffffff:60',\t\/\/ \u0446\u0432\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u0430   'center_text' =&gt; 416,\t\t\t\t\t\/\/ \u043d\u0430\u0434\u043f\u0438\u0441\u044c \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u0430   'center_text_size' =&gt; 14,\t\t\t\t\/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u0430   'center_text_color' =&gt; '#212121',\t\t\t\/\/ \u0446\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u0430    'data' =&gt; array(\t\t\t\t\t\/\/ \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435     139,     112,     89,     76),    'texts' =&gt; array (\t\t\t\t\t\/\/ \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043a \u0441\u0435\u043a\u0442\u043e\u0440\u0430\u043c, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u043d\u0438\u0435\u0439 \u0432\u044b\u043d\u043e\u0441\u043a\u0438     '\u043f\u0430\u0441',     '\u043d\u0430\u0432\u0435\u0441',     '\u0432 \u0440\u0430\u0437\u0440\u0435\u0437',     '\u043f\u0440\u043e\u0441\u0442\u0440\u0435\u043b'   ),    'colors' =&gt; array (\t\t\t\t\t\/\/ \u0446\u0432\u0435\u0442\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432     '0-#08b2ff-#0e56d4',     '0-#fffa17-#ffba17',     '0-#e0070e-#f15722',     '0-#BCE408-#5FBB00'   ),    'shadow' =&gt; 1\t\t\t\t\t\t\/\/ \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442 3D \u044d\u0444\u0444\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u043a\u043b\u043e\u0441\u0442\u0438 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b  );   \/\/ \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443, \u0432 &lt;head&gt;&lt;\/head&gt; \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c js \u043a\u043e\u0434, \u0432 &lt;body&gt;&lt;\/body&gt; - &lt;div&gt;&lt;\/div&gt; \/\/ c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b start_paper()   $head = start_paper('diagram', 200, 200) .paper_circle_chart($params); $body = '&lt;div id=&quot;diagram&quot;&gt;&lt;\/div&gt;';  echo ' &lt;!DOCTYPE html&gt; &lt;html&gt;   &lt;head&gt;     &lt;title&gt;\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0439 SVG \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Raphael \u0438 PHP&lt;\/title&gt;     &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=UTF-8&quot; \/&gt;     &lt;script src=&quot;\/raphael-min.js&quot;&gt;&lt;\/script&gt;     &lt;script&gt;       window.onload = function () {'         .$head .'        };     &lt;\/script&gt;   &lt;\/head&gt;   &lt;body&gt;'     .$body .'   &lt;\/body&gt; &lt;\/html&gt;';  ?&gt;  <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0447\u0438\u0439. \u041a\u0430\u0436\u0434\u044b\u0439 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 <a href=\"http:\/\/github.com\/DmitryBaranovskiy\/raphael\/raw\/master\/raphael-min.js\">\u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443<\/a> \u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 (circle.php, test.php \u0438 raphael-min.js) \u0432 \u0435\u0434\u0438\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435.<\/p>\n<p>  <u>\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 html, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442:<\/u><\/p>\n<pre><code class=\"html\">&lt;!DOCTYPE html&gt; &lt;html&gt;   &lt;head&gt;     &lt;title&gt;\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0439 SVG \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Raphael \u0438 PHP&lt;\/title&gt;     &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text\/html; charset=UTF-8&quot; \/&gt;     &lt;script src=&quot;\/raphael-min.js&quot;&gt;&lt;\/script&gt;     &lt;script&gt;       window.onload = function () {var r = Raphael(&quot;diagram&quot;, 200, 200);         var st = r.set();         st.push(           r.path(&quot;M100,100 L100,58 A42,42 0 0,1 136.27,121.18 z&quot;).attr({&quot;fill&quot;: &quot;0-#08b2ff-#0e56d4&quot;}),           r.path(&quot;M100,100 L136.27,121.18 A42,42 0 0,1 74.6,133.45 z&quot;).attr({&quot;fill&quot;: &quot;0-#fffa17-#ffba17&quot;}),           r.path(&quot;M100,100 L74.6,133.45 A42,42 0 0,1 61.7,82.76 z&quot;).attr({&quot;fill&quot;: &quot;0-#e0070e-#f15722&quot;}),           r.path(&quot;M100,100 L61.7,82.76 A42,42 0 0,1 100,58 z&quot;).attr({&quot;fill&quot;: &quot;0-#BCE408-#5FBB00&quot;})           );         st.attr({&quot;stroke&quot;: &quot;none&quot;});         r.circle(100, 100, 19).attr({&quot;fill&quot;: &quot;90-#e7e7e7-#ffffff:60&quot;, &quot;stroke&quot;: &quot;none&quot;});         r.circle(100, 100, 37).attr({&quot;fill&quot;: &quot;none&quot;, &quot;stroke&quot;: &quot;#FFFFFF&quot;, &quot;stroke-width&quot;: &quot;10&quot;, &quot;stroke-opacity&quot;: &quot;0.15&quot;});         var st = r.set();         st.push(         r.path(&quot;M127.75,84.07 L148.57,72.12 L188.57,72.12&quot;),         r.path(&quot;M106.24,131.39 L110.93,154.92 L150.93,154.92&quot;),         r.path(&quot;M68.99,107.89 L45.73,113.81 L5.73,113.81&quot;),         r.path(&quot;M82.63,73.13 L69.59,52.97 L29.59,52.97&quot;)           );         st.attr({&quot;stroke&quot;: &quot;#494949&quot;});         var st = r.set();         st.push(           r.circle(127.75, 84.07, 3),           r.circle(106.24, 131.39, 3),           r.circle(68.99, 107.89, 3),           r.circle(82.63, 73.13, 3)           );         st.attr({&quot;fill&quot;: &quot;#212121&quot;, &quot;stroke&quot;: &quot;#EFEFEF&quot;});         var st = r.set();         st.push(           r.text(168.57, 62.12, &quot;33 %&quot;),           r.text(130.93, 144.92, &quot;27 %&quot;),           r.text(25.73, 103.81, &quot;21 %&quot;),           r.text(49.59, 42.97, &quot;18 %&quot;)           );         st.attr({&quot;font-family&quot;: &quot;PT Sans, Tahoma&quot;, &quot;font-size&quot;: &quot;13&quot;, &quot;fill&quot;: &quot;#212121&quot;, &quot;cursor&quot;: &quot;default&quot;});         var st = r.set();         st.push(           r.text(168.57, 80.12, &quot;\u043f\u0430\u0441&quot;),           r.text(130.93, 162.92, &quot;\u043d\u0430\u0432\u0435\u0441&quot;),           r.text(25.73, 121.81, &quot;\u0432 \u0440\u0430\u0437\u0440\u0435\u0437&quot;),           r.text(49.59, 60.97, &quot;\u043f\u0440\u043e\u0441\u0442\u0440\u0435\u043b&quot;)           );         st.attr({&quot;font-family&quot;: &quot;PT Sans, Tahoma&quot;, &quot;font-size&quot;: &quot;11&quot;, &quot;fill&quot;: &quot;#212121&quot;, &quot;cursor&quot;: &quot;default&quot;});         r.text(100, 100, &quot;416&quot;).attr({&quot;font-family&quot;: &quot;PT Sans, Tahoma&quot;, &quot;font-size&quot;: &quot;14&quot;, &quot;fill&quot;: &quot;#212121&quot;, &quot;cursor&quot;: &quot;default&quot;});        };     &lt;\/script&gt;   &lt;\/head&gt;   &lt;body&gt;&lt;div id=&quot;diagram&quot;&gt;&lt;\/div&gt;   &lt;\/body&gt; &lt;\/html&gt;  <\/code><\/pre>\n<p>  \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u0430\u044f \u0437\u0430\u043b\u0438\u0432\u043a\u0430 (0-#BCE408-#5FBB00) \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 Raphael \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u044b \u0432 <a href=\"http:\/\/raphaeljs.com\/reference.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>. \u041a \u0441\u043b\u043e\u0432\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0438 \u043a\u0440\u043e\u0441\u0441\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u2014 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u0441 \u043d\u0430\u0448\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u043d\u0435\u043e\u0441\u043f\u043e\u0440\u0438\u043c\u044b\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430\u0434 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438.<\/p>\n<p>  \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u0448 \u043e\u043f\u044b\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432\u0441\u0435\u043c \u0442\u0435\u043c, \u043a\u0442\u043e \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432 html \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 JS. \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u0435.    \t \t\t   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/180659\/\"> http:\/\/habrahabr.ru\/post\/180659\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u043c html \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u044a\u0451\u043c\u043d\u0443\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043d\u0430\u043c JS \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438\u0437 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u044b \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0441\u0435\u043b\u0438 \u043d\u0430 JS \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/raphaeljs.com\/\">Raphael<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0432\u043e \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445. \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/beybegi.com\/pics\/habr\/circle.jpg\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432 SVG \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Raphael \u0438 PHP\"\/><\/p>\n<p>  \u0418\u0442\u0430\u043a. \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Raphael \u0438 PHP \u043a\u0440\u0443\u0433\u043e\u0432\u0443\u044e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 SVG, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438. \u041c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0441\u0435\u043c \u0442\u0435\u043c, \u043a\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0441\u0438\u043b \u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-180659","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/180659","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=180659"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/180659\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=180659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=180659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=180659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}