Arrays 随机阵列中像素特定位置的处理

Arrays 随机阵列中像素特定位置的处理,arrays,graph,processing,Arrays,Graph,Processing,我已经在7列中按顺序绘制了随机椭圆。但是,与其在行数组中任意位置随机绘制椭圆数,我只希望绘制它们,以便第一列中的一个椭圆必须接触第二列中的一个椭圆,等等,以便位置之间没有间隙。末端视觉效果看起来像一个条形图,在不同的条形高度上设置动画,但使用一组椭圆来实现。与此图像相似。 我的工作代码如下。我是否会访问像素颜色值并执行“如果条件”来比较rowArray[I]是否位于黑色像素的旁边,还是有一种更简单的方法我在这里忽略了?谢谢你的帮助。谢谢 PImage pix=createImage(7,7,R

我已经在7列中按顺序绘制了随机椭圆。但是,与其在行数组中任意位置随机绘制椭圆数,我只希望绘制它们,以便第一列中的一个椭圆必须接触第二列中的一个椭圆,等等,以便位置之间没有间隙。末端视觉效果看起来像一个条形图,在不同的条形高度上设置动画,但使用一组椭圆来实现。与此图像相似。

我的工作代码如下。我是否会访问像素颜色值并执行“如果条件”来比较rowArray[I]是否位于黑色像素的旁边,还是有一种更简单的方法我在这里忽略了?谢谢你的帮助。谢谢

PImage pix=createImage(7,7,RGB);
int计数器=0;
int计数器2=0;
int y=0;
int x=0;
int rowArray[]={0,1,2,3,4,5,6,7};
int colArray[]={0,1,2,3,4,5,6,7};
int帧延迟=300//在发送到电路板的帧之间暂停400毫秒
浮点数=0;
整数计数;
无效设置(){
背景(0);
大小(500500);
点=高度/7.0;
loadPixels();
对于(int i=0;i像素高度){
计数器=0;
y++;
}
如果(计数器2>像素宽度){
计数器2=0;
x++;
//也可在一轮后刷新屏幕
刷新();
}
//重置不要超出像素边界
如果(x>像素宽度){
x=0;
}
如果(y>像素高度){
y=0;
}
对于(int j=0;j
/编辑/ 我简化了我的代码,因为它有一些不必要的for循环。现在使用像素[loc]确定白色和黑色像素的位置并从那里开始

编辑代码

PImage pix=createImage(7,7,RGB);
int计数器=0;
//int randCount=0;
int计数器2=0;
int y=0;
int x=0;
//int randCount[]={0,1,2,3,4,5,6};
int randCount[]=新int[7];
//int rowArray[]={0,1,2,3,4,5,6,7};
int帧延迟=300//在发送到电路板的帧之间暂停400毫秒
浮动点大小=0;
无效设置(){
背景(0);
大小(500500);
dotSize=高度/7.0;
//开始时把所有的点都变成黑色
loadPixels();
对于(int i=0;i像素高度){
计数器=0;
y++;
}
如果(计数器2>像素宽度){
计数器2=0;
x++;
}
//重置不要超出像素边界
如果(x>pix.width)x=0;
如果(y>像素高度)y=0;
//逐行排列点
对于(int i=0;i
编辑-现在问题已经解决。下面发布代码,以防其他人遇到类似的故障排除

根据上述建议,我重新改写了问题:

我曾尝试创建一个随机数组长度,并在该数组中循环,以在一行中绘制随机的x数量椭圆。这在视觉上转化为一系列不同高度的白色椭圆,如条形图。下面的最小代码循环遍历数组长度,并成功地在数组长度中的每个像素处按顺序绘制椭圆。这就是我想要的。但是,由于它是随机的,因此有时会在椭圆之间留下一个间隙(黑色像素)。例如,在第1行中,它可以依次绘制3个白色椭圆,然后绘制1个像素的间距,然后绘制长度为第4个椭圆。我正在努力消除“差距”。这段代码实现了我想要的“一个接一个的椭圆绘制序列”,但在沿阵列长度创建椭圆时有黑色的间隙

PImage pix=createImage(7,7,RGB);
int计数器=0;
//int randCount=0;
int计数器2=0;
int y=0;
int x=0;
int