Processing 处理:创建通过绘制循环改变大小的形状
我正在尝试创建一个可视化,在这个可视化过程中,我的网络节点在一个循环中改变大小(为了简单起见,我去掉了节点之间的交互)。我有数组Processing 处理:创建通过绘制循环改变大小的形状,processing,Processing,我正在尝试创建一个可视化,在这个可视化过程中,我的网络节点在一个循环中改变大小(为了简单起见,我去掉了节点之间的交互)。我有数组size,它在draw函数中循环,索引为j。我不知道为什么节点没有改变大小。如能深入了解此问题,将不胜感激 int numBalls = 5; Ball[] balls = new Ball[numBalls]; float[] sizes = {15,25,35,45,55,65}; void setup() { size(800, 400); int
size
,它在draw
函数中循环,索引为j
。我不知道为什么节点没有改变大小。如能深入了解此问题,将不胜感激
int numBalls = 5;
Ball[] balls = new Ball[numBalls];
float[] sizes = {15,25,35,45,55,65};
void setup() {
size(800, 400);
int l = 0 ;
for (int i = 0; i < numBalls; i++) {
balls[i] = new Ball(random(width),random(height), random(30, 50), i, balls);
}
noStroke();
fill(255, 204);
}
void draw() {
background(0);
for (int j = 0; j < 6; j++){
for (int i = 0; i < numBalls; i++) {
print("\nNEW ID\n");
print(i);
print("\n");
print("Diameter in balls\n");
print(balls[i].diameter);
print("\n");
balls[i].diameter = sizes[j];
print("Diameter in balls after fix\n");
print(balls[i].diameter);
balls[i].display();
}
}
}
class Ball {
float x, y;
float diameter;
float mass;
float vx = 0;
float vy = 0;
int id;
Ball[] others;
Ball(float xin, float yin, float din, int idin, Ball[] oin) {
x = xin;
y = yin;
diameter = din;
mass = 50;
id = idin;
others = oin;
}
void display() {
textSize(32);
fill(0,255,0,255);
print("\nDiameter in display\n");
print(diameter);
print("\n");
ellipse(x, y, diameter, diameter);
print("\nDiameter in display\n");
print(diameter);
print("\n");
fill(255, 0, 0, 255);
text(id,x,y);
}
}
int numBalls=5;
Ball[]balls=新球[numBalls];
浮动[]大小={15,25,35,45,55,65};
无效设置(){
尺寸(800400);
int l=0;
for(int i=0;i
问题是,在draw()函数中,使用第一个for循环运行大小数组,并将该大小的值分配给球。这样,在每次绘制()中,您随后会在每个球上附加每个大小,并且每次附加的大小都会覆盖上一个大小。。。请记住,处理窗口仅在draw()完成后刷新!您可能希望在每个draw()中使用不同的大小,而不是循环遍历每个draw()中的所有大小。因此,一种方法是:
int numBalls = 5;
int sizeCounter = 0;
int everySoManyFramesChange = 3;
Ball[] balls = new Ball[numBalls];
float[] sizes = {
15, 25, 35, 45, 55, 65
};
void setup() {
size(800, 400);
int l = 0 ;
for (int i = 0; i < numBalls; i++) {
balls[i] = new Ball(random(width), random(height), random(30, 50), i, balls);
}
noStroke();
fill(255, 204);
}
void draw() {
background(0);
for (int i = 0; i < numBalls; i++) {
balls[i].diameter = sizes[sizeCounter];
balls[i].display();
}
if (frameCount%everySoManyFramesChange == 0) sizeCounter=(sizeCounter+1)%sizes.length;
}
class Ball {
float x, y;
float diameter;
float mass;
float vx = 0;
float vy = 0;
int id;
Ball[] others;
Ball(float xin, float yin, float din, int idin, Ball[] oin) {
x = xin;
y = yin;
diameter = din;
mass = 50;
id = idin;
others = oin;
}
void display() {
textSize(32);
fill(0, 255, 0, 255);
ellipse(x, y, diameter, diameter);
fill(255, 0, 0, 255);
text(id, x, y);
}
}
int numBalls=5;
int-sizeCounter=0;
int everySoManyFramesChange=3;
Ball[]balls=新球[numBalls];
浮动[]大小={
15, 25, 35, 45, 55, 65
};
无效设置(){
尺寸(800400);
int l=0;
for(int i=0;i
顺便说一句,我删除了所有这些打印语句,因为它们使草图变得非常慢,但请随意,重新介绍它们 了解您在这里使用的语言会有所帮助。我假设Java???@winterblood是处理标签中提到的编程语言。@Majlik啊,谢谢。从未听说过它,所以我认为它只是一个通用标记,因为代码看起来像太多其他类似C语言的语言。