ITPub博客

首页 > Linux操作系统 > Linux操作系统 > canvas实现画任意角星

canvas实现画任意角星

原创 Linux操作系统 作者:yinjliguang 时间:2012-07-30 18:06:49 0 删除 编辑






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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2012-07-30

  • 博文量
    5
  • 访问量
    4971