summaryrefslogtreecommitdiffstats
path: root/šola/p1/dn/Premica.java
diff options
context:
space:
mode:
Diffstat (limited to 'šola/p1/dn/Premica.java')
-rw-r--r--šola/p1/dn/Premica.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/šola/p1/dn/Premica.java b/šola/p1/dn/Premica.java
new file mode 100644
index 0000000..2d2ec4e
--- /dev/null
+++ b/šola/p1/dn/Premica.java
@@ -0,0 +1,50 @@
+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));
+ }
+}