给定圆心和半径在圆内随机画点

最近做智慧工地系统需要在地图做实时定位,需要对工人位置进行描绘。硬件会返回信标(蓝牙定位)的位置,由于无法获取工人在地图精确位置,

我这里暂时打算使用信标位置为圆心,距离最近信标的距离一半作为半径,去随机画点来对位置进行绘制。

前台采用地图采用leafletjs插件,https://leafletjs.com/。

下面是画点的算法:

r = R * sqrt(random())
theta = random() * 2 * PI

x = centerX + r * cos(theta)
y = centerY + r * sin(theta)
centerX 和centerY是圆心坐标,theta是生成的角度,R是需要画点的圆的半径,套用这个公式即可
    let x0 = targetX;
    let y0 = targetY;
    let r = radius * Math.sqrt(Math.random());
    let theta = Math.random() * 2 * Math.PI;
    targetX = x0 + r * Math.cos(theta);
    targetY = y0 + r * Math.sin(theta);

 

参考:https://stackoverflow.com/questions/5837572/generate-a-random-point-within-a-circle-uniformly/50746409#50746409

 

转载于:https://www.cnblogs.com/reject-ant/p/10108832.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值