import java.util.*; public class Premica { private double k; private double n; public Premica(double k, double n) { this.k = k; this.n = n; } public double vrniK() { return this.k; } public double vrniN() { return this.n; } public String toString() { return String.format(Locale.ROOT, "y = %.2f x + %.2f", this.k, this.n); } public Tocka tockaPriX(double x) { return new Tocka(x, this.k*x+this.n); } public static Premica skoziTocko(double k, Tocka t) { return new Premica(k, t.vrniY()-k*t.vrniX()); } public Premica vzporednica(Tocka t) { return skoziTocko(this.k, t); } public Premica pravokotnica(Tocka t) { return skoziTocko(-1/this.k, t); } public Tocka presecisce(Premica p, double epsilon) { if (Math.abs(this.k - p.vrniK()) < epsilon) return null; return tockaPriX((this.n-p.vrniN())/(p.vrniK()-this.k)); } public Tocka projekcija(Tocka t) { return presecisce(pravokotnica(t), 0); } public double razdalja(Tocka t) { return t.razdalja(projekcija(t)); } public double razdaljaOdIzhodisca() { return Tocka.izhodisce().razdalja(projekcija(Tocka.izhodisce())); } public double razdalja(double n) { return new Premica(this.k, n).razdalja(tockaPriX(0)); } }