canvas 正多边形及其雷达图画的一种画法

canvas api 2d 画法:

let ctx = tar_ctx.getContext("2d");

 

1. 使用 .arc 函数画点

2. 使用 .stroke 函数连接点

 

几何特性:

1. 正凸多边形,多有点到重心距离相等

2. 正凸多边形,所有点都可以落在同一圆上

3. 该圆的圆心就是正凸多边形的重心

 

示例:

 

步骤:

1. 绘制正凸多边形

2. 绘制雷达图区域

 

// 带填充数据
let list = [  // 并非为图例数据,可自由分配 0~1 之间
.9,
.8,
1,
.7,
.8,
.8
]

// 参考圆参数
let x = 200;
let y = 200;
let r = 80;

// 多边形边数目
let edges = list.length;

/** 正多边形背景部分 **/
ctx.beginPath(); // 路径记录开始

for (let i = 0; i < edges; i++) {
    // .5 * Math.PI 为旋转偏移量
    ctx.arc(x, y, r, 2 * Math.PI * i / edges - .5 * Math.PI, 2*Math.PI * i / edges - .5 * Math.PI);
}

ctx.closePath(); // 关闭路径
ctx.stroke();       // 点连线

/** 雷达填充部分 **/
ctx.fillStyle = 'yellow';
ctx.beginPath();

for (let i = 0; i < list.length; i++) {
     // 画点,顶点到重心的距离上截取百分比
     ctx.arc(x, y, r * list[i], 2*Math.PI * i / list.length - .5 * Math.PI,2*Math.PI * i / list.length - .5 * Math.PI);

}

ctx.closePath();
ctx.fill();

 

注:基本思想,canvas api 画图,是根据点位,进行连线;用画圆函数确定点位,根据闭合连线进行内部填充;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值