首页 > 解决方案 > 矩形、正方形、圆形、三角形等常见几何形状的充分条件是什么?以及如何以编程方式检查它?

问题描述

例如,给定 4 个点,很难(至少对我来说)检查它们是否形成一个矩形,因为编写代码来证明两条边之间的 90 度并不容易。

你会怎么做?你觉得呢?你有没有什么想法?

标签: geometry

解决方案


给定:4分a,b,c,d
需要:检查它们是否形成一个矩形

像这样查找坐标差异:

BAx = B.x - A.x

检查三个后续边的点积是否为零(真正的垂直向量):

function IsPerp(A,B,C,D) 
   return ((BAx * CBx + BAy * CBy == 0) && 
          (CBx * DCx + CBy * DCy == 0) && 
          (DCx * ADx + DCy * ADy == 0))

但请注意,顶点可能是错误排序的,因此我们检查三个变体(这比对它们进行排序更简单)以避免类似之字形的顺序:

IsRectangle = IsPerp(a,b,c,d) || IsPerp(a,b,d,c) || IsPerp(a,d,b,c)  

推荐阅读