mirror of
https://github.com/processing/processing4.git
synced 2026-02-11 09:39:19 +01:00
80 lines
1.4 KiB
Plaintext
80 lines
1.4 KiB
Plaintext
|
|
class Mass {
|
|
static final float diamter = 5;
|
|
static final float radius = 1+diamter/2;
|
|
|
|
float x,y,xv,yv;
|
|
|
|
Mass(int x, int y) {
|
|
this.x = x;
|
|
this.y = y;
|
|
}
|
|
|
|
void update() {
|
|
yv += g.value;
|
|
|
|
double speed = sqrt(xv*xv+yv*yv);
|
|
double fs = 1-f.value;
|
|
if (speed>speedFrictionThreshold)
|
|
fs *= speedFrictionThreshold/speed;
|
|
xv *= fs;
|
|
yv *= fs;
|
|
|
|
x += xv;
|
|
y += yv;
|
|
|
|
if (x<radius) {
|
|
x -= x-radius;
|
|
xv = -xv;
|
|
} else if (x>width-radius) {
|
|
x -= x-(width-radius);
|
|
xv = -xv;
|
|
}
|
|
if (y<sliderHeight+radius) {
|
|
y -= y-(sliderHeight+radius);
|
|
yv = -yv;
|
|
} else if (y>height-radius) {
|
|
y -= y-(height-radius);
|
|
yv = -yv;
|
|
}
|
|
}
|
|
|
|
void clamp() {
|
|
if (x<radius) {
|
|
x = radius;
|
|
} else if (x>width-radius) {
|
|
x = width-radius;
|
|
}
|
|
if (y<sliderHeight+radius) {
|
|
y = sliderHeight+radius;
|
|
} else if (y>height-radius) {
|
|
y = height-radius;
|
|
}
|
|
}
|
|
|
|
void display() {
|
|
if (this == overMass) {
|
|
stroke(0x00,0x99,0xFF);
|
|
line(x,y,mouseX,mouseY);
|
|
noStroke();
|
|
fill(0x00,0x99,0xFF);
|
|
}
|
|
else {
|
|
noStroke();
|
|
fill(0);
|
|
}
|
|
ellipse(x,y,diamter,diamter);
|
|
}
|
|
|
|
float distanceTo(Mass m) {
|
|
return distanceTo(m.x,m.y);
|
|
}
|
|
|
|
float distanceTo(float x,float y) {
|
|
float dx = this.x-x;
|
|
float dy = this.y-y;
|
|
return sqrt(dx*dx+dy*dy);
|
|
}
|
|
}
|
|
|