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

标签 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
    }

最佳答案

好点@Durandal (+1)

但是我又想到了一个随机的圆圈。

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

double distance = random( width/2  );

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

通过这种方式生成的密度不均匀,如您在第一张图片中所见。 enter image description here

但是,如果您更改概率密度函数,使值越大的概率越小,您就可以获得均匀生成的云。

这么简单的修改:

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

生成更均匀分布的圆圈,如您在第二张图片中所见。 enter image description here

我希望这对您有所帮助..

关于java - 主要在 X 和 Y 轴上绘制的圆圈,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26995104/

相关文章:

c# - 在 C# 中舍入为偶数

java - 在 Java 中检索矩阵的当前比例值

java - 如何重绘 - 在处理中重新启动循环

java - 在Java中为数字添加前导零?

java - 如何在 Java 中修复 URL 中的非法字符?

javascript - 将坐标转换为数组中的 block 位置

javascript - 编辑 JavaScript/HTML5 视频中的像素数据(处理为 JS 翻译)

java - 如何让屏幕/摄像头跟随 box2d 主体移动

java - JTable - 触发列数据更改事件

java - Java Webdriver 中的 SendKeys 方法出现异常