使用PHP/HTML生成SVG多边形会产生奇怪的结果

使用PHP/HTML生成SVG多边形会产生奇怪的结果,php,svg,Php,Svg,我想渲染一个SVG图像,比如手表。 视图框为1000 x 1000px,因此中心/偏移量为500500 基本html如下所示: <div class="imageMap"> <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 1000 1000&qu

我想渲染一个SVG图像,比如手表。 视图框为1000 x 1000px,因此中心/偏移量为500500

基本html如下所示:

    <div class="imageMap">
    <svg xmlns="http://www.w3.org/2000/svg" 
        width="100%" height="100%" viewBox="0 0 1000 1000">
    <defs><style>
        .imageMap polygon { fill: red; opacity:0.5; }
        .imageMap polygon:nth-child(2n) { fill: green; }
        </style></defs>
        <image width="100%" height="100%" 
        xlink:href="clear.gif"></image>
        <?php render() ?>
        </svg>
    </div>

.imageMap多边形{填充:红色;不透明度:0.5;}
.imageMap多边形:第n个子(2n){填充:绿色;}
php:

    function render() {
      $parts=4;
      $arc = 360/$parts; $offsetX=500; $offsetY=500;
      for($i=0; $i < 360; $i += $arc) {
        $x0 = $offsetX;
        $y0 = $offsetY;
        $x1 = cos($i) * 500+$offsetX;
        $y1 = sin($i) * 500+$offsetY;
        $x2 = cos($i+$arc) * 500+$offsetX;
        $y2 = sin($i+$arc) * 500+$offsetY;
        $stringArray[] = '<polygon points="'.$x0.','.$y0.','.$x1.','.$y1.','.$x2.','.$y2.'"/>';
      }
      return implode(PHP_EOL, $stringArray);
    }
function render(){
$parts=4;
$arc=360/$parts;$offsetX=500;$offsetY=500;
对于($i=0;$i<360;$i+=$arc){
$x0=$offsetX;
$y0=$offsetY;
$x1=cos($i)*500+offsetX美元;
$y1=sin($i)*500+offsetY美元;
$x2=cos($i+$arc)*500+$offsetX;
$y2=sin($i+arc)*500+offsetY;
$stringArray[]='';
}
返回内爆(PHP_EOL,$stringArray);
}

根据cos和sin取弧度值。您提供的值以度为单位,因此值太大

您可以使用将度转换为弧度。

#-)您完全正确:deg2rad($i)完成了这项工作!非常感谢。