/** Cette classe implémente la physique d'un pendule rigide. Elle
 * implémente l'interface Integrable afin de pouvoir facilement être
 * intégrée par un Integrateur quelconque. */
public class Pendule implements Integrable {
    /** contient les variables d'état du système. Convention:
     *  etat[0] ... theta
     *  etat[1] ... omega
     */
    double[] etat = new double[2];

    /** Crée un pendule avec l'état initial [theta,omega]. */
    public Pendule(double theta, double omega) {
        etat[0] = theta;
        etat[1] = omega;
    }

    /** Equations du mouvement du pendule. */
    public void calcDeriv(double[] y, double[] yp) {
        yp[0] = y[1];
        yp[1] = -1;
    }

    /** Donne la valeur actuelle de theta. */
    public double getTheta() {
        return etat[0];
    }

    /** Donne la valeur actuelle de omega. */
    public double getOmega() {
        return etat[1];
    }

    public double[] getState() {
        return etat;
    }
}