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

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

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

前台采用地图采用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

 

posted @ 2018-12-12 15:50  赢在当下  阅读(595)  评论(0编辑  收藏  举报