canvas 画多边形
为什么能画出来 看不懂<!DOCTYPE html>
<html>
<head>
<title>正六边形</title>
<meta charset="utf-8">
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
</body>
<script type="text/javascript">
var canvas = document.querySelector('#canvas'),
context = canvas.getContext('2d');
// 定义边长、颜色、边数、canvas大小
var length = 100, fillColor = '#000', vertices = 6, size = 1000;
canvas.width = size;
canvas.height = size;
var getDegree = function(vertices, index) {
return 360 / vertices * (i + 0.5) + 90;//这个是什么意思?
}
var getRadian = function(degree) {
return degree * Math.PI / 180;//这里是什么意思?
};
context.beginPath();
for (var i = 0; i < vertices; i++) {
// 计算偏转
var degree = getDegree(vertices, i),
radian = getRadian(degree);
// 增加1/3的canvas大小位移量以免被边缘挡住
var x = Math.cos(radian) * length + size / 3;//为什么这样算可以得出x?
var y = Math.sin(radian) * length + size / 3 ;//为什么这样算可以得出y?
context.lineTo(x, y);
}
context.closePath();
context.stroke();
</script>
</html>
————————————————
版权声明:本文为CSDN博主「sysuzjz」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sysuzjz/article/details/53107594 var canvas = document.querySelector('#canvas'),
context = canvas.getContext('2d');
// 定义多边形外接圆半径、颜色、边数、canvas大小
var length = 100, fillColor = '#000', vertices = 9, size = 1000;
canvas.width = size;//定义画布大小
canvas.height = size;
var getDegree = function(vertices, index) {
//360/vertices 获取圆心角 ,0.5 决定图像显示的方向 可以为0 或 0.5,90从y轴开始计算角度 最后角度超过360 参考sin cos 正弦 余弦函数图像
//求出当前角角度
//当前知识点属于平面直角坐标系三角函数
return 360 / vertices *(i + 0.5) + 90;
//return 360 / vertices *i ;//一样可以画出多边形
}
var getRadian = function(degree) {
return degree * Math.PI / 180;//求弧度
};
context.moveTo(size/2,0);
context.lineTo(size/2,size);
context.moveTo(0,size/2);
context.lineTo(size,size/2);
context.stroke();
context.beginPath();//重置路径 , 路径将不予之前路径链接
context.translate(size/2,size/2);
context.font ='18px bold 黑体';
var randio = new Array;
for (var i = 0; i < vertices; i++) {
// 计算偏转
var degree = getDegree(vertices, i),
radian = getRadian(degree);
console.log(degree);
// 增加1/3的canvas大小位移量以免被边缘挡住
//附件 //x y 为何这么求
var x = Math.cos(radian) * length; //+ size / 3;
var y = Math.sin(radian) * length ;//+ size / 3 ;
y = -y;//显示的坐标系 右 x + 下 y +使其变成正常的坐标系
//context.lineTo(x, y);
context.fillText(i+1,x+20,y-10);//点显示
context.lineTo(x,y);
randio.push();
console.log(x,y);
}
context.closePath();//当前点到开始点的路线 使其成为完整的图形
context.stroke();//绘制所有点
context.beginPath();
页:
[1]