Package fmg.fmg8.graphVis.zeichenModi

Source Code of fmg.fmg8.graphVis.zeichenModi.Strecke2D

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

package fmg.fmg8.graphVis.zeichenModi;

import fmg.fmg8.umgebung2D.Vektor2D;

/**
* Implementierung einer Strecke.
*
* @author Lukas K�nig
*/
public class Strecke2D {

    /**
     * Der Anfangspunkt der Strecke.
     */
    private Vektor2D anfPkt;
   
    /**
     * Der Endpunkt der Strecke.
     */
    private Vektor2D endPkt;
   
    /**
     * Konstruktor.
     *
     * @param anfang  Der Anfangspunkt der Geraden.
     * @param ende    Der Endpunkt der Geraden.
     */
    public Strecke2D(final Vektor2D anfang, final Vektor2D ende) {
       this.anfPkt = new Vektor2D(anfang);
       this.endPkt = new Vektor2D(ende);
    }
   
    /**
     * Konstruktor.
     *
     * @param s  Die andere Strecke, von der die Endpunkte �bernommen werden.
     */
    public Strecke2D(final Strecke2D s) {
        this.anfPkt = s.anfPkt;
        this.endPkt = s.endPkt;
    }

    /**
     * @return Returns the anfPkt.
     */
    public Vektor2D getAnfPkt() {
        return this.anfPkt;
    }

    /**
     * @return Returns the endPkt.
     */
    public Vektor2D getEndPkt() {
        return this.endPkt;
    }

    /**
     * Gibt die Richtung der Gerade normiert zur�ck.
     *
     * @return  Die Richtung der Geraden.
     */
    public Vektor2D getNormRicht() {
        Vektor2D richt = new Vektor2D(this.endPkt);
        richt.sub(anfPkt);
        richt.normal();
        return richt;
    }
   
    /**
     * @return  Die L�nge der Strecke.
     */
    public double getLaenge() {
        return this.anfPkt.distanz(this.endPkt);
    }
   
    /**
     * @param anfang The anfPkt to set.
     */
    public void setAnfPkt(final Vektor2D anfang) {
        this.anfPkt = anfang;
    }

    /**
     * @param ende The endPkt to set.
     */
    public void setEndPkt(final Vektor2D ende) {
        this.endPkt = ende;
    }
   
    /**
     * Berechnet den Schnttpunkt der beiden Strecken this und q.
     *
     * @param q  Die andere Strecke.
     *
     * @return  Der Schnittpunkt von g ung h. Wenn die Strecken keinen
     *          Schnittpunkt haben, wird <code>null</code> zur�ckgegeben.
     */
    public Vektor2D schnPkt(final Strecke2D q) {
        Vektor2D vp, vq;
        Gerade2D g, h;
        vp = this.getNormRicht();
        vq = q.getNormRicht();
       
        g = new Gerade2D(this.anfPkt, vp);
        h = new Gerade2D(q.anfPkt, vq);
       
        Vektor2D strSchnPkt = g.schnPkt(h);
       
        if (strSchnPkt == null) {
            return null;
        }
       
        if (strSchnPkt.istInRechteckOR(this.anfPkt, this.endPkt)
            && strSchnPkt.istInRechteckOR(q.anfPkt, q.endPkt)) {
            return strSchnPkt;
        } else {
            return null;
        }
    }
   
    /**
     * @return  Der Text.
     */
    @Override
    public String toString() {
        return "<" + this.anfPkt + " - " + this.endPkt + ">";
    }
}
TOP

Related Classes of fmg.fmg8.graphVis.zeichenModi.Strecke2D

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.