随机点位在矩形内、圆形内、圆环上

要求:
有若干个要素地图点位相同,需要在周围指定范围内展示所有点

实现原理:
利用随机数给中心点x、y增量

	// 定义个随机数函数返回[-1,1]的值
	function random(){
		return ((Math.random() * 2) - 1);
	}
  1. 点在周围矩形范围内
    在这里插入图片描述
	let count = 100; // 随机点数
	let step = 0.0001; // 范围
	let item = {
	 longitude : 110,
	 latitude : 30
	};
	while(count--){
	  let x = Number(item.longitude) + random() * step;
	  let y =	Number(item.latitude) + random() * step;
	  console.log('随机点',count,"x:",x,"y:",y);
	}
  1. 点在周围的圆环上
    在这里插入图片描述
	let count = 100; // 随机点数
	let step = 0.0001; // 范围
	let item = {
	 longitude : 110,
	 latitude : 30
	};
	let mean = 2 / count; // 点在圆环上间隔
	let radin = -1; 
	while(count--){
	  let l = radin * Math.PI;
      let x = Number(item.longitude) + step * Math.cos(l);
	  let y = Number(item.latitude) + step * Math.sin(l);
	  radin = radin + mean;
	  console.log('随机点',count,"x:",x,"y:",y);
	}
  1. 点在周围圆范围内
    在这里插入图片描述
	let count = 100; // 随机点数
	let step = 0.0001; // 范围
	let item = {
	 longitude : 110,
	 latitude : 30
	};
	while(count--){
	  let isAgain = true;
	  while(isAgain){
	    x = random();
    	y = random();
		const l = Math.pow(x,2) + Math.pow(y,2);
		isAgain = l > 1; // 判断是否在圆内,true时重新生成随机数.
	  }
	  let l = radin * Math.PI;
      x = Number(item.longitude) +  step * x;
	  y = Number(item.latitude) + step * y;
	  console.log('随机点',count,"x:",x,"y:",y);
	}let count = 100; // 随机点数
	let step = 0.0001; // 范围
	let item = {
	 longitude : 110,
	 latitude : 30
	};
	while(count--){
	  // 随机弧度
	  let radin = random() * Math.PI;
	  let mean = Math.random();
	  let x = Number(item.longitude) + mean * Math.cos(radin) * step;
	  let y = Number(item.latitude) + mean * Math.sin(radin) * step;
	  console.log('随机点',count,"x:",x,"y:",y);
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值