const 绘制多边形=(边数,偏移横坐标,偏移纵坐标,半径)=>{
const 平分角度=360/边数, 圆周率=Math.PI
for (let 索引=0;索引<边数;索引++){
let 横坐标=Math.cos(((90-平分角度+平分角度*索引)*圆周率)/180)*半径+偏移横坐标
let 纵坐标=-Math.sin(((90-平分角度+平分角度*索引)*圆周率)/180)*半径+偏移纵坐标
ctx.lineTo(横坐标,纵坐标)
}
}
const 平分角度=360/边数, 圆周率=Math.PI
for (let 索引=0;索引<边数;索引++){
let 横坐标=Math.cos(((90-平分角度+平分角度*索引)*圆周率)/180)*半径+偏移横坐标
let 纵坐标=-Math.sin(((90-平分角度+平分角度*索引)*圆周率)/180)*半径+偏移纵坐标
ctx.lineTo(横坐标,纵坐标)
}
}
2018-10-31
已采纳回答 / 对酌
有必要这么复杂么,直接控制x,y的值在正常显示范围内不就好了,可以根据大圆大R来计算x,y具体的范围值,比如x的范围值是 0+R 到 canvas.width-R,y值的范围也根据这个算出来就可以了,具体部分代码是:<...code...>
2018-08-26
最新回答 / 哈士奇你怕吗
对源代码修改:function drawStar(cxt,r,R,x,y,color,rot, lineWidth){cxt.clearRect(0,0,800,800);// <-------------------------在这里清除画布cxt.beginPath(); for (let i = 0; i < 5; i++) { cxt.lineTo(Math.cos((18 + i * 72- rot) / 180 * Math.PI) * R + x, ...
2018-08-23