/**
 * Beschreiben Sie hier die Klasse Gerade.
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */

   
public class Gerade
{
    // Attribute
    double m;
    double c;
    
    // Methoden
    
    /**
     * Konstruktor, erstellt eine Gerade direkt aus der
     * Steigung m und dem y-Achsenabschnitt c
     */
    public Gerade(double _m, double _c) {
        m = _m;
        c = _c;
    }
    
    /**
     * Konstruktor, erzeugt die Gerade aus zwei Punkten,
     * berechnet Steigung und y-Achsenabschnitt
     */
    public Gerade(Punkt a, Punkt b) {
        m = (b.y - a.y) / (b.x - a.x);
        c = (a.y) - (m * a.x);
    }
    
    /**
     * Methode lässt die Gerade mit einer anderen schneiden
     * und gibt den Schnittpunkt zurück
     */
    public Punkt schneide(Gerade g) {
        double x = (g.c - c)/(m - g.m);
        double y = m * x + c;
        
        return new Punkt(x, y);
    }
    
    /**
     * Erzeugt einen String der Form y=m*x+c und
     * gibt diesen zurück
     */
    public String toString() {
        return "y=" + m + "*x+" + c;
    }
}