Problem Description
给出四个点,判断这四个点能否构成一个正方形。
Input
输入的第一行包含一个整数T(T≤30)表示数据组数,每组数据只有一行,包括8个整数x1, y1, x2, y2,x3,y3,x4,y4(数据均在-1000,1000 之间)以逆时针顺序给出四个点的坐标。
Output
每组数据输出一行,如果是正方形,则输出: YES, 否则,输出:NO。
Example Input
20 0 1 0 1 1 0 1-1 0 0 -2 1 0 2 0
Example Output
YESNO
Hint
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
cin.nextLine();
for (int i = 0; i < n; i++) {
String str = cin.nextLine();
String str1[] = str.split(" ");
// System.out.println(str1.toString());
int a[] = new int[8];
for (int j = 0; j < 8; j++) {
a[j] = Integer.parseInt(str1[j]);
//System.out.println(a[j]);
}
square(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]);
}
}
public static void square(int x1, int y1, int x2, int y2, int x3, int y3,
int x4, int y4) {
if (((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1)) == ((x2 - x1)
* (x2 - x1) + (y2 - y1) * (y2 - y1))
+ ((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2))
&& ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) == ((x3 - x2)
* (x3 - x2) + (y3 - y2) * (y3 - y2)))
System.out.println("YES");
else
System.out.println("NO");
}
}