首页 > Linux操作系统 > Linux操作系统 > canvas实现画任意角星
window.onload = function() {
document.getElementById('draw').onclick = function() {
var count = parseInt(document.getElementById('count').value);
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height)
draw_multi_deg(context, count, '#F00', 150, 150, 100 );
};
/**
* count:正多角星角的个数
* x:横坐标
* y:纵坐标
* r:多角星外接圆半径
*/
function draw_multi_deg(context, n, color, x, y, r) {
if(color)
context.strokeStyle. = color;
var deg = getDegree(n);
context.beginPath();
for(i = 0 ;i < n; i ++) {
var sintheta = Math.sin(deg * i);
var costheta= Math.cos(deg * i);
context.lineTo(x + r * sintheta, y + r * costheta);
}
context.closePath();
context.stroke();
function getDegree(n) {
for(var k = Math.ceil(n/4); k < n; k++) {
var flag = [];
var current = 0;
initArr(flag, 1, n);
for(j = 0; j < n; j++) {
flag[current] = 0;
current = (current + k) % n;
if(sum(flag, n) === 0){
return k * Math.PI * 2 / n;
}
}
}
return -1;
function initArr(arr, value, count) {
for(var i = 0; i < count; i++) {
arr[i] = value;
}
}
function sum(arr, n) {
var sum = 0;
for(var i = 0; i < n; i++) {
sum = sum + arr[i];
}
return sum;
}
}
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27214128/viewspace-738793/ ,如需转载,请注明出处,否则将追究法律责任。