主要在X轴和Y轴上绘制的圆圈,为什么?

时间:2014-11-18 13:06:31

标签: java math processing

enter image description here

我使用绘制圆圈的处理创建了一个循环,整体形状应该是圆形。然而,它们主要靠近X和Y轴绘制。我已将其位置的微积分随机化,我无法看出问题所在。

代码如下:

for (int omega = 0; omega<1080; omega++){  //loop for circle creation
    radius = (int)random(80);   //random radius for each circle

    int  color1= (int)random(100);  //little variation of color for each circle
    int  color2= (int)random(100);

        int locationY = (int)(sin(radians(omega))*random(width/2+1)); //location calcualtion
        int locationX = (int)(cos(radians(omega))*random(width/2+1));
        fill(0,color1+200,color2+200,50);
        ellipse(locationX,locationY,radius,radius); //draw circles
    }

2 个答案:

答案 0 :(得分:5)

它是计算位置的方式的假象,你为X和Y分量拉两个不同的随机值:

int locationY = (int)(sin(radians(omega))*random(width/2+1)); //location calcualtion
int locationX = (int)(cos(radians(omega))*random(width/2+1));

对于X和Y,您应该使用距离中心的一个随机值“距离”,这将移除朝向轴的聚类。

答案 1 :(得分:5)

好点@Durandal(+1)

然而,我还有一个随机圈子的想法。

使用此类代码生成随机距离时:

double distance = random( width/2  );

您是从统一分发随机的。我的意思是从0width/2的所有值都具有相同的概率。但是,半径为3*r的圆圈的面积会增加9倍,然后以r半径圆圈。因此,距离中心的距离越小,我们就能看到越大的密度。

这样生成的 没有统一的密度,就像您在第一张图片上看到的那样。 enter image description here

但是如果你改变概率密度函数,那么较大的值不太可能是较小的值,你可以统一生成云。

这样简单的修改:

double distance = Math.sqrt( random( width/2 * width/2 ) );

生成更均匀分布的圆,正如您在第二张图像上看到的那样。 enter image description here

我希望这会有所帮助..