0
私はすでに質問を繰り返すことを避けるために私と同じようなエラーを見つけようとしましたが、何も見つかりませんでした。コードがかなり長かったことをお詫び申し上げます。私が何をやっているのか誰かが私に説明することができたら、私はそれを高く評価します。前もって感謝します。あなたのインデントを修正する場合は、より良い{ }
中括弧を一致させることができるように処理中 - 変数 'i'は存在しませんか?
// Physical Constants
float g=-9.81; // Gravity
float k=0.0; // Friction const (Try 0.02)
float m=0.25; // Mass kg
float dt=0.01; // Time step 10ms
// Boundary (starting) conditions
float vy=0; // Initial vertical velocity
float y=0.9; // Initial vertical position
float x=0; // Initial horizontal position
float vx=0.8; // Initial horizontal velocity
float t=0; // Initial time
Ball [] b;
void setup()
{
b=new Ball[50];
for(int i=0;i<50;i++)
{
b[i]=new Ball();
}
size(500, 500);
}
void draw()
{
background(255);
for(int i=0;i<50;i++)
{
b[i].advance();
b[i].draw_ball();
}
}
int Collision(int j,Ball b[])
{
int res=-1;
for(int i=0;i<50;i++)
{
if (i!=j)
{
float sep=sqrt(pow(b[i].x-b[j].x,2)+pow(b[i].y-b[j].y,2));
float rads=b[i].radius+b[j].radius;
if(sep<rads){ res=i;}
}
}
return(res);
}
class Ball
{
color c;
float radius;
float vy;
float y;
float x;
float vx;
float t;
Ball()
{
y=random(0.1,0.9);
vy=random(-1,1);
x=random(0.1,0.9);
vx=random(-1,1);
c=color(random(255),random(255), random(255));
radius = 0.01+random(0.04);
t=0;
}
void advance()
{
vy=vy+(g-((k/m)*vy))*dt;
y=y+(vy*dt);
vx=vx+(-((k/m)*vx))*dt;
x=x+(vx*dt);
t=t+dt;
if (y<=0) {vy=-vy; y=y+(vy*dt);}
if (x<=0) {vx=-vx; x=x+(vx*dt);}
if (x>=1) {vx=-vx; x=x+(vx*dt);}
}
{
b[i].advance();
int r=Collision(i,b); // Check if ball i collides with any balls in array b
if(r!=-1) // -1 means no collision, r is index that identifies ball in b
{
float nvxj = (b[i].vx * (b[i].radius - b[r].radius) + (2 * b[r].radius * b[r].vx))/
(b[i].radius + b[r].radius);
float nvyj = (b[i].vy * (b[i].radius - b[r].radius) + (2 * b[r].radius * b[r].vy))/
(b[i].radius + b[r].radius);
float nvxr = (b[r].vx * (b[r].radius - b[i].radius) + (2 * b[i].radius * b[i].vx))/
(b[i].radius + b[r].radius);
float nvyr = (b[r].vy * (b[r].radius - b[i].radius) + (2 * b[i].radius * b[i].vy))/
(b[i].radius + b[r].radius);
b[i].vx=nvxj;
b[i].vy=nvyj;
b[r].vx=nvxr;
b[r].vy=nvyr;
}
b[i].draw_ball();
void draw_ball()
{
float sx=map(x,0,1,0,width);
float sy=map(y,0,1,height-1,0);
float rx=map(radius,0,1,0,width);
float ry=map(radius,0,1,0,height);
fill(c);
ellipse(sx,sy,2*rx,2*ry);
}
}
このエラーはどのラインで発生しますか? –