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