用变量的方式绘制一个五角星,首先求五角星十个顶点的坐标。

可以把每个五角星看成外顶点用一个大圆绘制,内顶点用小圆绘制。在坐标系(0deg)下,根据每个顶点的角度和圆的半径求得x,y。

 

而每个大顶点相差72deg(180/5),每个小顶点也差72deg.所以下一个顶点的度数就是当前点加上72deg.(逆时针)

 代码实现

 drawStar(context, 300, 150, 400, 400);
function drawStar(context, R, r, x, y) {
            context.beginPath();
            for (var i = 0; i < 5; i++) {
                context.lineTo(x + Math.cos((18 + 72 * i) / 180 * Math.PI) * R,
                               y - Math.sin((18 + 72 * i ) / 180* Math.PI)* R);
                context.lineTo(x + Math.cos((54 + 72 * i) / 180 * Math.PI)  * r,
                               y - Math.sin((54 + 72 * i) / 180 * Math.PI) * r);
            }
            context.closePath();
            context.stroke();
        }
02-11 04:37