假设有一组面积不同的矩形,其中一些矩形可能重叠。目标是在矩形区域内生成均匀随机点。
矩形被定义为两个点的对:
- (x1,y1) - 左下角; - (x2,y2) - 右上角。
我对于不重叠矩形中的随机点的均匀分布策略是基于面积随机选择一个矩形(现有解决方案):
矩形被定义为两个点的对:
- (x1,y1) - 左下角; - (x2,y2) - 右上角。
我对于不重叠矩形中的随机点的均匀分布策略是基于面积随机选择一个矩形(现有解决方案):
for(int i = 0; i < rectangles.length; i++) {
int area = (rectangles[i].x2 - rectangles[i].x1) *
(rectangles[i].y1 - rectangles[i].y2);
if(rand.nextInt(total + area) >= total) {
selected = i;
break;
}
total += area;
}
在矩形内生成任意点:
- x1 +(1/(x2-x1))*rand(0,(x2-x1-1)),
- y1 +(1/(y2-y1))*rand(0,(y2-y1-1)).
但如果一些矩形重叠怎么办?