package com.interview.books.topcoder.geometry;
import com.interview.utils.FloatAssertion;
import com.interview.utils.GeoUtil;
import java.util.Arrays;
import java.util.Comparator;
/**
* Created_By: stefanie
* Date: 15-1-6
* Time: 上午11:22
*/
public class TC_G13_RectangleChecker {
public boolean isRectangle(float[][] points){
Comparator<float[]> comparator = new Comparator<float[]>() {
@Override
public int compare(float[] o1, float[] o2) {
if(FloatAssertion.equals(o1[0], o2[0])){
return FloatAssertion.compareTo(o1[1], o2[1]);
} else return FloatAssertion.compareTo(o2[0], o1[0]);
}
};
Arrays.sort(points, comparator);
if(GeoUtil.isPerpendicular(points[0], points[1], points[3])
&& GeoUtil.isPerpendicular(points[0], points[2], points[3])) return true;
else return false;
}
public static void main(String[] args){
TC_G13_RectangleChecker checker = new TC_G13_RectangleChecker();
float[][] points = new float[][]{
{0,0},{10,10},{0,10},{10,0}
};
System.out.println(checker.isRectangle(points)); //true
points = new float[][]{
{0,0},{2,1},{0,5},{-2,4}
};
System.out.println(checker.isRectangle(points)); //true
points = new float[][]{
{0,0},{3,1},{0,5},{-2,4}
};
System.out.println(checker.isRectangle(points)); //false
}
}