c++怎么判断四个点是否构成正方形

  介绍

这篇文章将为大家详细讲解有关c++怎么判断四个点是否构成正方形,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

判断方法分为两步:

1。判断四条边是否相等;

2。判断是否有一个角为直角;

求解两点之前距离的函数:

double 距离(int  x1, int 日元int  x2, int  y2) {   return 才能;√战俘(x1, x2)), 2) +战俘((y1 y2), 2));   }

判断三点连续构成的角是否为直角,第一个点参数为顶点:

bool  IsRightAngle (int  x1, int 日元int  x2, int  y2, int  x3, int  y3) {   如果才能((x2-x1) * (x3-x1) + (y2-y1) * (y3-y1)==0)   ,,,return 真实;   return 才能;假;   }

完整的程序:

# include  & lt; iostream>   # include  & lt; math.h>   using  namespace 性传播疾病;//直接调用IsSquare函数、输入为四个点的坐标,输出为true 或是假;//求两点间的距离   double 距离(int  x1, int 日元int  x2, int  y2) {   return 才能;√战俘(x1, x2)), 2) +战俘((y1 y2), 2));   }//判断三个点是否构成直角,第一个参数点是顶点   bool  IsRightAngle (int  x1, int 日元int  x2, int  y2, int  x3, int  y3) {   如果才能((x2-x1) * (x3-x1) + (y2-y1) * (y3-y1)==0)   ,,,return 真实;   return 才能;假;   }   bool  IsSquare (int  x1, int 日元int  x2, int  y2, int  x3, int  y3, int  x4, int  y4) {   如果才能(x1==x2&, x2==x3)   ,,,return 假;   double 才能;s12=距离(x1, y1, x2, y2);   double 才能;向=距离(x1, y1, x3, y3);   double 才能;s14系列=距离(x1, y1, x4 y4);   double 才能;s23=距离(x2, y2, x3, y3);   double 才能;s24=距离(x2, y2、x4、y4);   double 才能;s34=距离(x3, y3、x4、y4);   如果才能(s12==s13&, s24==s34&和s12==s24) {   ,,,如果(IsRightAngle (x1, y1, x2, y2, x3, y3)), return 真实;   ,,,else  return 假;   ,,}   如果才能(s12==s14&, s23==s34&和s12==s23) {   ,,,如果(IsRightAngle (x1, y1, x2, y2, x4, y4)), return 真实;   ,,,else  return 假;   ,,}   如果才能(向==s14&, s23==s24&,向==s23) {   ,,,如果(IsRightAngle (x1, y1, x3, y3, x4, y4)), return 真实;   ,,,else  return 假;   ,,}   return 才能;假;   }   int  main () {   int 才能;(x1, y1, x2, y2, x3, y3, x4, y4;   ,cin>才能的在x1>祝辞y1>祝辞x2>祝辞y2>祝辞x3>祝辞y3>祝辞x4>在y4;   cout<才能;& lt; IsSquare (x1, y1, x2, y2, x3, y3, x4, y4) & lt; & lt; endl;   return 才能;0;   }

测试用例:

0, 1, 1, 0, 1, 1, 0, 0

输出结果为1(真正的)

<强>补充:判断四个点是否可以构成矩形(优雅的解法! ! !)

首先我们需要先检查输入的四个点是不是有重复。然后判断四个角是不是直角即可。

def  isOrthogonal (p1, p2, p3):   return 才能;(p2[0],安康,p1 [0]), *, (p2[0],安康;p3 [0]), +, (p2[1],安康,p1 [1]), *, (p2[1],安康;p3 [1]),==0   def  _isRectangle (p1, p2, p3,, p4):   return 才能;self.isOrthogonal (p1, p2, p3),以及self.isOrthogonal (p2, p3, p4),以及self.isOrthogonal (p3, p4, p1)   def  isRectangle (p1, p2, p3,, p4):   return 才能;self._isRectangle (p1, p2, p3,, p4),或是self._isRectangle (p1, p2, p3,, p4),或是self._isRectangle (p3, p1, p2,, p4)

一个更加巧妙地回答,我们可以先计算中点的位置

 C + +怎么判断四个点是否构成正方形

然后再计算中点到四个点的距离是不是一样即可。

def  dis (p1, p2):   return 才能;(p1[0],安康;p2 [0]) * * 2, +, (p1[1],安康;p2 [1]) * * 2   def  isRectangle (p1, p2, p3,, p4):   x_c 才能=,(p1 [0], +, p2 [0], +, p3 [0], +, p4 [0])/4   y_c 才能=,(p1 [1], +, p2 [1], +, p3 [1], +, p4 [1])/4   d1 =,才能说(p1, (x_c y_c))   d2 =,才能说(p2,, (x_c y_c))   d3 =,才能说(p3,, (x_c y_c))   d4 =,才能说(p4,, (x_c y_c))   return 才能;d1 ==, d2 以及d1 ==, d3 以及d1 ==, d4

关于“c++怎么判断四个点是否构成正方形”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

c++怎么判断四个点是否构成正方形