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

ene*_*eko 5 java math processing

在此输入图像描述

我使用绘制圆的处理创建了一个循环,整体形状应该是一个圆.然而,它们主要靠近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
    }
Run Code Online (Sandbox Code Playgroud)

Dur*_*dal 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));
Run Code Online (Sandbox Code Playgroud)

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


prz*_*tel 5

好点@Durandal(+1)

但是我还有一个随机圈子的想法.

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

double distance = random( width/2  );
Run Code Online (Sandbox Code Playgroud)

你从均匀分布随机.我的意思是,从所有的值0width/2具有相同的概率.但是3*r半径为圆的圆的9面积越大,则半径为r圆.因此,距离中心的距离越小,我们就能看到越大的密度.

这样生成的 就没有统一的密度,就像你在第一张图片上看到的那样. 在此输入图像描述

但是如果你以这样的方式改变概率密度函数,那么更小的值就越不可能得到更小的值,你可以得到统一生成的云.

这样简单的修改:

double distance = Math.sqrt( random( width/2 * width/2 ) );
Run Code Online (Sandbox Code Playgroud)

产生更均匀分布的圆,正如您在第二张图像上看到的那样. 在此输入图像描述

我希望这会有所帮助..