在比赛中常常会出现根据四个点来判断这四个点构成四边形的形状
按照顺时针给出,(有时因为斜率的不存在,所以处理要小心点,下面给出一些处理,避免斜率的问题)
x[4],y[4];
1.
平行四边形
两条边两两平行
int a = (y[1] - y[0]) * (x[3] - x[2]); 18 int b = (x[1] - x[0]) * (y[3] - y[2]); 19 if(a != b) return false; 20 a = (x[2] - x[1]) * (y[3] - y[0]); 21 b = (x[3] - x[0]) * (y[2] - y[1]); 22 return a == b;在四边形的基础上判断菱形,长方形,正方形
2.菱形
对角线,相互垂直//避免出现斜率不存在的情况
int a = (y[0] - y[2]) * (y[1] - y[3]); 35 int b = (x[1] - x[3]) * (x[0] - x[2]); 36 return a == -b;3.长方形
对角线,相等
int a = (x[0] - x[2]) * (x[0] - x[2]) + (y[0] - y[2]) * (y[0] - y[2]); 28 int b = (x[1] - x[3]) * (x[1] - x[3]) + (y[1] - y[3]) * (y[1] - y[3]); 29 return a == b;满足菱形,长方形就是正方形