iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
0
自我挑戰組

學習 canvas 日記系列 第 16

第 16 天 多邊形

  • 分享至 

  • xImage
  •  
var counter = 5,
    r = 50;

for (var i =0;i<=counter;i++) {
    var x = r * Math.cos(Math.PI/180*360/counter * i) + 50;
    var y = r * Math.sin(Math.PI/180*360/counter * i) + 50;
    ctx.lineTo(x,y);
}
ctx.stroke();

https://ithelp.ithome.com.tw/upload/images/20181029/201074961WoRKhYlix.jpg
作法是用設定一個整數變數來計算要產生的多邊形
所以要先建立 counter數量、r圓半徑
再用 for 迴圈找出每個點 (x, y)
下圖用紅點代表
起點 (50, 50)
https://ithelp.ithome.com.tw/upload/images/20181029/20107496lybe4xMI1w.jpg
第2個點開始的 (x,y) 都用cos和sin計算
https://ithelp.ithome.com.tw/upload/images/20181029/201074969km0fkZ7sl.jpg
計算方式就像下圖找出 (x,y) 的位置
x = cos (360 / 多邊形數量)
y = sin (360 / 多邊形數量)
https://ithelp.ithome.com.tw/upload/images/20181029/20107496oZ9DAO3pB4.jpg

這是五邊形的做法
如果是六邊形、七邊形、...
作法一樣只需要改 counter 整數變數就可以了

var counter = 7;

https://ithelp.ithome.com.tw/upload/images/20181029/20107496V0T1slnDbg.jpg


上一篇
第 15 天 圓餅圖
下一篇
第 17 天 旋轉、放大、縮小
系列文
學習 canvas 日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言