1 回答

TA貢獻1812條經驗 獲得超5個贊
我會嘗試創建一個繪制六邊形的函數,這樣您就不必使用翻譯。
見下文
c = document.getElementById("canvas");
context = c.getContext("2d");
function hexagon(x, y, r, color) {
context.beginPath();
var angle = 0
for (var j = 0; j < 6; j++) {
var a = angle * Math.PI / 180
var xd = r * Math.sin(a)
var yd = r * Math.cos(a)
context.lineTo(x + xd, y + yd);
angle += 360 / 6
}
context.fillStyle = color;
context.fill();
}
hexagon(50, 50, 30, "red")
hexagon(40, 40, 10, "blue")
hexagon(60, 60, 10, "lime")
<canvas id=canvas >
這是一個細分function hexagon(x, y, r, color)
它以六邊形 (
x,y
) 為中心、半徑 (r
) 和顏色我們遍歷六個頂點并繪制線條
計算只是一點三角函數,沒什么特別的
這樣我們就可以在任何我們想要的位置繪制六邊形。
您可以輕松地重構相同的函數來繪制八邊形或其他多邊形。
這是這些六邊形的動畫版本
c = document.getElementById("canvas");
context = c.getContext("2d");
delta = 0
function hexagon(x, y, r, color) {
context.beginPath();
var angle = 0
for (var j = 0; j < 6; j++) {
var a = angle * Math.PI / 180
var xd = r * Math.sin(a)
var yd = r * Math.cos(a)
context.lineTo(x + xd, y + yd);
angle += 360 / 6
}
context.fillStyle = color;
context.fill();
}
function draw() {
context.clearRect(0, 0, c.width, c.height)
var xd = 10 * Math.sin(delta)
var yd = 10 * Math.cos(delta)
hexagon(50 - xd, 50 - yd, 30, "red")
hexagon(40 + xd, 40 + yd, 10, "blue")
delta += 0.2
}
setInterval(draw, 100);
<canvas id=canvas>
正如你所看到的,不需要使用翻譯
- 1 回答
- 0 關注
- 126 瀏覽
添加回答
舉報