matlab:重叠圆圈下的区域

时间:2013-02-18 09:35:31

标签: matlab geometry coordinates area

我有一个问题......

想象一下尺寸为A x A的正方形。现在让我们模拟直径为d的圆,随机分布在这个正方形内,如下图所示(在这种情况下,d是相同的,但不是规则,它们可能是也在d1到d2之类的某个范围内随机分布。

simulation example

让我们说圈子在矩阵中描述为:

circles(1, :) = [x, y, d]; 
circles(2, :) = [x, y, d]; 
...and so on

其中xy是坐标,d是直径。现在的问题是,如何模拟这个圆圈,直到达到拥挤参数cc只是定义为:c = yellow area / square area (in this case A^2)

第二件事 - 让我们说一切都是模拟的,我想检查一些坐标(x,y)是否在黄色区域之内或之外......怎么做?我这样做是通过检查我的(x,y)是否在每个圆圈的区域内(但是当我使用圆形矩形时,它变得更加困难),一个接一个,但必须有一些更好的方法它。 感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

这是一种应该采用这种方法的方法:

  1. 从一个大的空矩阵开始(大到足以保证生成的每个形状完全在矩阵内)。假设我们这样做color = zeros(100)
  2. 虽然我们尚未达到整理率:一个圆圈的中点和直径,我假设你可以管理这个
  3. 更改圆圈中所有点的颜色,例如将其设置为1。
  4. 计算拥挤率(类似于c = mean(mean(color))
  5. 注意,如果你只想使用矩阵的一部分(使形状部分地落在图片之外),这可以通过在步骤4中使用mean(mean(color(11:end-11))来实现,忽略边缘附近的10个像素

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