java-scuola/NetBeans Projects/LineaCalcoli/src/lineacalcoli/Line.java

93 lines
2.2 KiB
Java

package lineacalcoli;
/**
*
* @author radaelli11353
*/
public class Line {
private double a;
private double b;
private double c;
/**
* Costruttore per linea con punto e pendenza
* @param x1 X del punto fornito
* @param y1 Y del punto fornito
* @param m Pendenza
*/
public Line(double x1, double y1, double m) {
a = -m;
b = 1;
c = y1 - m * x1;
}
/**
* Costruttore per linea passante per due punti
* @param x1 X del primo punto
* @param y1 Y del primo punto
* @param x2 X del secondo punto
* @param y2 Y del secondo punto
*/
public Line(double x1, double y1, double x2, double y2) {
a = (y2 - y1)/(x1 - x2);
b = 1;
c = (x2 * y1 - x1 * y2) / (x1 - x2);
}
/**
* Costruttore per linea con pendenza e intersezione con y
* @param m Pendenza
* @param q Intersezione con l'asse delle y
*/
public Line(double m, double q) {
a = -m;
b = 1;
c = -q;
}
/**
* Costruttore per retta verticale
* @param k Costante che indica l'intersezione con x
*/
public Line(double k) {
a = 1;
b = 0;
c = -k;
}
@Override
public String toString() {
return a + "," + b + "," + c;
}
/**
* Metodo che controlla se c'è intersezione tra due rette (=non parallele)
* @param other Altra retta
* @return True se c'è intersezione, false se sono parallele
*/
public boolean intersects(Line other) {
return !isParallel(other);
}
/**
* Metodo che confronta l'uguaglianza tra due rette
* @param other Altra retta
* @return True se le rette sono uguali (sovrapposte)
*/
public boolean equals(Line other) {
return a == other.a && b == other.b && c == other.c;
}
/**
* Metodo che controlla se le rette sono parallele
* @param other Altra retta
* @return True se sono parallele, false se c'è intersezione
*/
public boolean isParallel(Line other) {
double thisM = -a / b;
double otherM = -other.a / other.b;
return thisM == otherM;
}
}