题目描述
在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分。假定正方形的上下两条边与x轴平行。
给定两个vecotrA和B,分别为两个正方形的四个顶点。请返回一个vector,代表所求的平分直线的斜率和截距,保证斜率存在。
测试样例:
[(0,0),(0,1),(1,1),(1,0)],[(1,0),(1,1),(2,0),(2,1)]
返回:[0.0,0.5]
思路:找到两个正方形的中心点即可,然后求他们的斜率与截距。垂直与x轴的斜率不存在,垂直于y轴的为0.
import java.util.*;
/*
public class Point {
int x;
int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public Point() {
this.x = 0;
this.y = 0;
}
}*/
public class Bipartition {
public double[] getBipartition(Point[] A, Point[] B) {
// write code here
double centerax,centeray,centerbx,centerby;
centerax = (A[0].x+A[1].x+A[2].x+A[3].x)/4.0;
centeray = (A[0].y+A[1].y+A[2].y+A[3].y)/4.0;
centerbx = (B[0].x+B[1].x+B[2].x+B[3].x)/4.0;
centerby = (B[0].y+B[1].y+B[2].y+B[3].y)/4.0;
double []result = new double[2];
result[0] = (centeray-centerby)/(centerax-centerbx);
//y=result[0]*x+b --> b=y-result[0]*x
result[1] = centeray-result[0]*centerax;
return result;
}
}