首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据给定的长度确定矩形?

如何根据给定的长度确定矩形?
EN

Stack Overflow用户
提问于 2018-01-07 10:33:52
回答 3查看 635关注 0票数 1

如果我有四个边给我,我如何确定这四个边是否形成一个矩形?目前,我所做的是:

  1. 在大小为4的数组中,以侧的4个边作为输入;
  2. 数组的sort(array,array+4)排序
  3. 对于(int i=0;i<2;i+=2) { if(ai = ai+1) {标志=假;中断;}

但是,这里我只是检查这四个边是否是平行四边形。如何更改我的算法,使其检查它是否为矩形

EN

回答 3

Stack Overflow用户

发布于 2018-01-07 10:48:07

我想你可以通过

  1. 首先检查是否只有四个唯一的点。
  2. 第二,计算所有对的距离,你必须得到最大三个不同的数值。每条对角线一条,两边两条。
  3. 然后双方必须完成毕达哥拉斯关系。
票数 1
EN

Stack Overflow用户

发布于 2018-01-07 12:40:46

矩形(不像三角形)不是刚性的多边形;这就是为什么如果只给你四个长度,你就有无限多的可能的数字。例如,在最简单的[1, 1, 1, 1]情况下,我们可以有方形(矩形)或众多菱形中的一个(不是)。如果我们把这个问题说成

代码语言:javascript
复制
  If any rectangle can be constructed with given lengths (lengths can be used in arbitrary order)

我们可以用这种方法解决它

  1. 获得所有四个长度
  2. 按升序排序
  3. 检查length[0] > 0 (所有长度都为正)
  4. 检查length[0] == length[1] && length[2] == length[3]

如果秩序被保留(我们不能重新排列长度):

  1. 获得所有四个长度
  2. 检查(in循环)是否为length[i] > 0 (所有长度均为正)
  3. 检查length[0] == length[2] && length[1] == length[3]
票数 1
EN

Stack Overflow用户

发布于 2018-01-09 09:18:58

对于矩形,您必须检查对边(没有公共顶点)是否相等长度,以及两个对角线(也没有公共顶点)是否相似。如果你检查所有的可能性,你会发现共同的属性是没有公共点的顶点之间的分段的所有可能性都必须是相同的长度(边对和对角对齐)

另一种更简单的方法是检查所有顶点是否都在一个公共圆中(中心位于矩形中心),这是两个对角线的公共点,假设在P1、P2、P3和P4有顶点:得到中点C1 = (P1 + P3)/2和C2 = (P2 + P4)/2 (C1必须相等C2)。如果您的图形是矩形,则所有四个顶点都必须位于一个中心为C1 == C2 == C的圆中,而且所有点都必须位于一个圆内。所以dist(Pi,C)必须是相同的。我认为这是检查它们是否形成矩形的最直接的方法。

备注

只具有边长,您无法确定角边是矩形,因为菱形的四边都相等,但不是矩形(它通过了圆中所有顶点的测试,因为两个对角线都不是相同的大小),对于菱形(它的边等于二乘二,但对角不是相同的大小,顶点也不属于一个共同的圆)。

如果有四个边,也有两个对角线,则边必须由交替对相等,对角必须是相等的长度,才能形成矩形。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48136293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档