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)
它是计算位置的方式的假象,你为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,您应该使用距离中心的一个随机值"距离",这将移除朝向轴的聚类.
好点@Durandal(+1)
但是我还有一个随机圈子的想法.
使用此类代码生成随机距离时:
double distance = random( width/2 );
Run Code Online (Sandbox Code Playgroud)
你从均匀分布随机.我的意思是,从所有的值0到width/2具有相同的概率.但是3*r半径为圆的圆的9面积越大,则半径为r圆.因此,距离中心的距离越小,我们就能看到越大的密度.
这样生成的云 就没有统一的密度,就像你在第一张图片上看到的那样.

但是如果你以这样的方式改变概率密度函数,那么更小的值就越不可能得到更小的值,你可以得到统一生成的云.
这样简单的修改:
double distance = Math.sqrt( random( width/2 * width/2 ) );
Run Code Online (Sandbox Code Playgroud)
产生更均匀分布的圆,正如您在第二张图像上看到的那样.

我希望这会有所帮助..
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |