day3 (german!) libs
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
import mathematik.*;
|
||||
|
||||
import teilchen.test.cubicle.*;
|
||||
import teilchen.integration.*;
|
||||
import verhalten.*;
|
||||
import teilchen.*;
|
||||
import verhalten.view.*;
|
||||
import teilchen.test.particle.behavior.*;
|
||||
import teilchen.behavior.*;
|
||||
import teilchen.demo.*;
|
||||
import teilchen.test.particle.springs.*;
|
||||
import teilchen.gestalt.test.*;
|
||||
import teilchen.cubicle.*;
|
||||
import verhalten.test.*;
|
||||
import teilchen.force.flowfield.*;
|
||||
import teilchen.test.particle.*;
|
||||
import teilchen.gestalt.util.*;
|
||||
import teilchen.constraint.*;
|
||||
import teilchen.force.vectorfield.*;
|
||||
import teilchen.force.*;
|
||||
import teilchen.util.*;
|
||||
|
||||
import mathematik.*;
|
||||
|
||||
import teilchen.Physics;
|
||||
import teilchen.force.Attractor;
|
||||
import teilchen.force.Gravity;
|
||||
import teilchen.force.Spring;
|
||||
import teilchen.force.ViscousDrag;
|
||||
import teilchen.integration.RungeKutta;
|
||||
import teilchen.util.Overlap;
|
||||
import teilchen.util.StickMan;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* this demo shows some advanced use of particles, springs and attractors to create stickmen.
|
||||
*/
|
||||
|
||||
Physics mPhysics;
|
||||
|
||||
Attractor mAttractor;
|
||||
|
||||
Gravity mGravity;
|
||||
|
||||
ViscousDrag mViscousDrag;
|
||||
|
||||
StickMan[] mMyStickMan;
|
||||
|
||||
void setup() {
|
||||
size(640, 480, OPENGL);
|
||||
smooth();
|
||||
frameRate(60);
|
||||
noFill();
|
||||
|
||||
mPhysics = new Physics();
|
||||
mPhysics.setInegratorRef(new RungeKutta());
|
||||
|
||||
mGravity = new Gravity();
|
||||
mGravity.force().y = 20;
|
||||
mPhysics.add(mGravity);
|
||||
|
||||
mViscousDrag = new ViscousDrag();
|
||||
mViscousDrag.coefficient = 0.85f;
|
||||
mPhysics.add(mViscousDrag);
|
||||
|
||||
mAttractor = new Attractor();
|
||||
mAttractor.radius(500);
|
||||
mAttractor.strength(0);
|
||||
mAttractor.position().set(width / 2, height / 2);
|
||||
mPhysics.add(mAttractor);
|
||||
|
||||
mMyStickMan = new StickMan[20];
|
||||
for (int i = 0; i < mMyStickMan.length; i++) {
|
||||
mMyStickMan[i] = new StickMan(mPhysics, random(0, width), random(0.3f, 0.6f));
|
||||
}
|
||||
}
|
||||
|
||||
void draw() {
|
||||
|
||||
mPhysics.step(1f / 60f);
|
||||
Overlap.resolveOverlap(mPhysics.particles());
|
||||
|
||||
/* constraint particles */
|
||||
for (int i = 0; i < mPhysics.particles().size(); i++) {
|
||||
if (mPhysics.particles(i).position().y > height - 10) {
|
||||
mPhysics.particles(i).position().y = height - 10;
|
||||
}
|
||||
if (mPhysics.particles(i).position().x > width) {
|
||||
mPhysics.particles(i).position().x = width;
|
||||
}
|
||||
if (mPhysics.particles(i).position().x < 0) {
|
||||
mPhysics.particles(i).position().x = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* handle particles */
|
||||
if (mousePressed) {
|
||||
mAttractor.position().set(mouseX, mouseY);
|
||||
if (mouseButton == RIGHT) {
|
||||
mAttractor.strength(-500);
|
||||
mAttractor.radius(500);
|
||||
}
|
||||
else {
|
||||
mAttractor.strength(500);
|
||||
mAttractor.radius(100);
|
||||
}
|
||||
}
|
||||
else {
|
||||
mAttractor.strength(0);
|
||||
}
|
||||
|
||||
if (keyPressed) {
|
||||
mGravity.force().y = -10;
|
||||
}
|
||||
else {
|
||||
mGravity.force().y = 20;
|
||||
}
|
||||
|
||||
/* draw */
|
||||
background(255);
|
||||
|
||||
/* draw springs */
|
||||
stroke(0, 20);
|
||||
for (int i = 0; i < mPhysics.forces().size(); i++) {
|
||||
if (mPhysics.forces(i) instanceof Spring) {
|
||||
Spring mySpring = (Spring)mPhysics.forces(i);
|
||||
line(mySpring.a().position().x,
|
||||
mySpring.a().position().y,
|
||||
mySpring.b().position().x,
|
||||
mySpring.b().position().y);
|
||||
}
|
||||
}
|
||||
|
||||
/* draw particles */
|
||||
for (int i = 0; i < mPhysics.particles().size(); i++) {
|
||||
ellipse(mPhysics.particles(i).position().x,
|
||||
mPhysics.particles(i).position().y, 5, 5);
|
||||
}
|
||||
|
||||
/* draw man */
|
||||
for (int i = 0; i < mMyStickMan.length; i++) {
|
||||
mMyStickMan[i].draw(g);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user