Skip to content

restitution (Stoßzahl bzw. Restitutionskoeffizient)

Wir setzen die Elastizität auf 0, damit beim ersten Kreis mit der Stoßzahl 0 demonstriert werden kann, dass dieser nicht abprallt.

Methoden in der Klasse Actor:

 * Demonstriert die Methode {@link pi.actor.Actor#restitution(double)}
 */
public class RestitutionDemo extends Scene
{
    private final Rectangle ground;

    public RestitutionDemo()
    {
        camera().meter(20);
        // Ein Reckteck als Boden, auf dem die Kreise abprallen.
        ground = new Rectangle(24, 1);
        ground.position(-12, -16);
        // Wir setzen die Elastizität auf 0, damit beim ersten Kreis mit der
        // Stoßzahl 0 demonstriert werden kann, dass dieser nicht abprallt.
        ground.restitution(0);
        ground.makeStatic();
        gravity(0, -9.81);
        add(ground);
        double restitution = 0;
        for (double x = -11.5; x < 12; x += 2)
        {
            createCircleWithElasticity(x, restitution);
            restitution += 0.1;
        }
    }

    private void createCircleWithElasticity(double x, double restitution)
    {
        Circle circle = new Circle(1);
        add(circle);
        circle.restitution(restitution);
        circle.position(x, 5);
        circle.makeDynamic();
        // Eine Beschriftung mit der Stoßzahl unterhalb des Kollisionsrechtecks
        DecimalFormat df = new DecimalFormat("0.00");
        Text label = new Text(df.format(restitution), 0.8);
        label.position(x, -17);
        label.makeStatic();
        add(label);
    }

    public static void main(String[] args)
    {
        Controller.instantMode(false);
        Controller.recordScreen();
        Controller.start(new RestitutionDemo(), 600, 800);
    }
}
Zum Java-Code: demos/docs/physics/RestitutionDemo.java