//计算两条直线的交点
//输入四个点,前两个点确定线段1,后两个点确定线段2
//输出交点坐标
public class Main{
public static void main(String args[]){
double[] point1= new double[]{10.0,29.0};
double[] point2 = new double[]{1.0,3.0};
double[] point3 = new double[]{40,2};
double[] point4 = new double[]{90,3};
double[] node = cross(point1,point2,point3,point4);
if(node==null)System.out.println(false);
else System.out.println(node[0]+","+node[1]);
HashSet set = new HashSet<>();
set.add(node[0]+":"+node[1]);
for(String item:set){
System.out.println(item);
}
}
public static double[] cross(double[] point1,double[] point2,double[] point3,double[] point4){
if((point2[1]-point1[1])*(point4[0]-point3[0])==(point4[1]-point3[1])*(point2[0]-point1[0]))return null;
if(point2[0]-point1[0]==0){
double k2 = (point4[1]-point3[1])/(point4[0]-point3[0]);
double b2 = point3[1]-point3[0]*k2;
double cross_x = point1[0];
double cross_y = k2*cross_x+b2;
return new double[]{cross_x,cross_y};
}
if(point4[0]-point3[0]==0){
double k1 = (point2[1]-point1[1])/(point2[0]-point1[0]);
double b1 = point1[1]-point1[0]*k1;
double cross_x = point3[0];
double cross_y = k1*cross_x+b1;
return new double[]{cross_x,cross_y};
}
double k1 = (point2[1]-point1[1])/(point2[0]-point1[0]);
double b1 = point1[1]-point1[0]*k1;
double k2 = (point4[1]-point3[1])/(point4[0]-point3[0]);
double b2 = point3[1]-point3[0]*k2;
double cross_x = (b1-b2)/(k2-k1);
double cross_y = k1*cross_x+b1;
return new double[]{cross_x,cross_y};
}
}