Package fmg.fmg8.umgebung2D.dynWaende

Source Code of fmg.fmg8.umgebung2D.dynWaende.ZahnradDynamik

/*
* Datei:            ZahnradDynamik.java
* Autor(en):        Lukas K�nig
* Java-Version:     6.0
* Erstellt:         24.08.2009
*
* (c) Lukas K�nig, die Datei unterliegt der LGPL
* -> http://www.gnu.de/lgpl-ger.html
*/

package fmg.fmg8.umgebung2D.dynWaende;

import fmg.fmg8.sonstiges.SonstMeth;
import fmg.fmg8.statistik.Parametersatz;
import fmg.fmg8.umgebung2D.Roboter;
import fmg.fmg8.umgebung2D.Umgebung;
import fmg.fmg8.umgebung2D.Vektor2D;

/**
* @author Lukas K�nig
*/
public class ZahnradDynamik implements Dynamik {

    /**
     * Die Anzahl der Messungen, bei denen ein Roboter n�her am linken
     * Zahnrad war.
     */
    private long anzahlLinks = 0;
   
    /**
     * Die Anzahl der Messungen, bei denen ein Roboter n�her am rechten
     * Zahnrad war.
     */
    private long anzahlRechts = 0;
   
    /**
     * Die Verschiebe-Methode, die das linke obere Zahnrad in der
     * Zahnradumgebung dreht. Das rechte untere Zahnrad wird nur auf
     * einen konstanten Winkel gedreht.
     *
     * @param umg     Die Umgebung, in der die Ver�nderungen stattfinden
     *                sollen.
     * @param simZyk  Der aktuelle Simulationszyklus.
     * @param params  Die Parameter.
     */
    @Override
    public void verschVorUm(
            final Umgebung umg,
            final long simZyk,
            final Parametersatz params) {
        umg.dreheWand(
                47,
                umg.getDynDrehWinkel()[47] * 180 / Math.PI + 0.75);
        umg.dreheWand(
                221,
                umg.getDynDrehWinkel()[221] * 180 / Math.PI - 0.75);
    }

    /**
     * F�hrt die Verschiebung, Verzerrung, Rotation... von W�nden in der
     * �bergebenen Umgebung durch. NACH der Umschaltung in Simulationsmodus.
     * Es wird einfach die Methode VOR Umschaltung aufgerufen.
     *
     * @param umg     Die Umgebung, in der die Ver�nderungen stattfinden sollen.
     * @param simZyk  Der aktuelle Simulationszyklus.
     * @param params  Die Parameter.
     */
    @Override
    public void verschNachUm(
            final Umgebung umg,
            final long simZyk,
            final Parametersatz params) {
        Vektor2D mitte1, mitte2;
        double abstand1, abstand2;
        int bef0;
        String befehl0;

        this.verschVorUm(umg, simZyk, params);
       
        for (Roboter rob : umg.getAkteure()) {
            mitte1 = rob.getUmg().getDynWaende()[47].mittelpunkt();
            mitte2 = rob.getUmg().getDynWaende()[221].mittelpunkt();
            abstand1 = rob.getPosition().distanz(mitte1);
            abstand2 = rob.getPosition().distanz(mitte2);
   
            bef0 = ((Integer) rob.getBefehle().get(0)).intValue();
            befehl0 = fmg.fmg8.umgebung2D.Konstanten.BEF[bef0].toUpperCase();

            if (befehl0.equals("MOV")) {
                if (abstand1 <= abstand2) {
                    this.anzahlLinks++;
                } else {
                    this.anzahlRechts++;
                }
            }
        }

        if (simZyk % 100 == 0) {
            SonstMeth.log(
                    SonstMeth.LOG_INFO,
                    "Naeher am linken Zahnrad: " + this.anzahlLinks,
                    umg.getPars());
            SonstMeth.log(
                    SonstMeth.LOG_INFO,
                    "Naeher am rechten Zahnrad: " + this.anzahlRechts,
                    umg.getPars());
        }
    }
}
TOP

Related Classes of fmg.fmg8.umgebung2D.dynWaende.ZahnradDynamik

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.