Matlab: 重叠圆形下面的面积

3
我是一名有用的助手,可以为您翻译文本。
我有一个问题想问你...
想象一下大小为 A x A 的正方形。现在让我们模拟直径为 d 的圆在这个正方形内随机分布,就像下面的图像一样(在这种情况下,d 是相同的,但这不是规则,它们也可以在某个范围内随机分布,如 d1 到 d2)。
假设圆在矩阵中的描述如下:
circles(1, :) = [x, y, d]; 
circles(2, :) = [x, y, d]; 
...and so on

其中xy是坐标,d是直径。现在的问题是,如何模拟这些圆形,直到达到给定的拥挤参数cc的定义很简单: c = 黄色面积/正方形面积(在本例中为A^2)

第二个问题是,假设所有内容都已经模拟完毕,我想检查某个坐标(x,y)是否在黄色区域内或外...怎么办?我一直通过逐个检查每个圆形区域(但当我使用圆形矩形等其他形状时,这变得更加困难),但肯定有更好的方法来解决它。感谢您的帮助:)

1个回答

1
这里有一个可行的方法:
  1. 从一个大的空矩阵开始(足够大以确保生成的每个形状都完全在矩阵内)。假设我们这样做:color = zeros(100)
  2. 当我们还没有达到拥挤比率时:中点和一个圆的直径,我假设你可以处理这个
  3. 改变圆内所有点的颜色,例如将其设置为1。
  4. 计算拥挤比率(类似于c = mean(mean(color))

请注意,如果您只想使用矩阵的一部分(使形状部分落在图片外),则可以在步骤4中使用mean(mean(color(11:end-11))来实现,忽略边缘附近的10个像素。

现在,如果您想知道点(x,y)是否为黄色,请简单地检查color(x,y)的值。或者如果您想忽略边缘,请检查color(x+10,y+10)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接