61 lines
1.5 KiB
Java
61 lines
1.5 KiB
Java
|
public class Droite {
|
||
|
public double a, b, c;
|
||
|
|
||
|
public String toString(){
|
||
|
return a + "x + " + b + "y = " + c;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Represent a line in the space with the equation ax + by = c
|
||
|
* @param a ax
|
||
|
* @param b by
|
||
|
* @param c c
|
||
|
*/
|
||
|
Droite(double a, double b, double c){
|
||
|
this.a = a;
|
||
|
this.b = b;
|
||
|
this.c = c;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Check if the line is horizontal
|
||
|
* @return true if the line is horizontal
|
||
|
* @return false if the line is not horizontal
|
||
|
*/
|
||
|
public boolean isHorizontal(){
|
||
|
if(a == 0)
|
||
|
return true;
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Find the intersection by 2 lines
|
||
|
* @param other the other line you should find the intersection with
|
||
|
* @return Point The Point of the intersection
|
||
|
* @return Null if the lines are not intersecting
|
||
|
* @return Null if the lines are the sames
|
||
|
*/
|
||
|
public Point intersection(Droite other){
|
||
|
if(a * other.b - b * other.a == 0)
|
||
|
return null;
|
||
|
return new Point((other.b*c - b*other.c)/(a*other.b + b * other.a), (other.c - other.a*((other.b*c - b*other.c)/(a*other.b + b * other.a)))/other.b );
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Create a new line with the two points given
|
||
|
* @param p1 the first point
|
||
|
* @param p2 the second point
|
||
|
* @return Droite the line that is between the given points
|
||
|
*/
|
||
|
public static Droite create(Point p1, Point p2){
|
||
|
System.out.println(p1 + "; " + p2);
|
||
|
Point directeur = new Point(p2.getX() - p1.getX(), p2.getY() - p2.getY());
|
||
|
System.out.println(directeur);
|
||
|
double a = -directeur.getY();
|
||
|
double b = directeur.getX();
|
||
|
return new Droite(a, b, a*p1.getX() + b*p1.getY());
|
||
|
}
|
||
|
}
|