gpt4 book ai didi

python - 如何知道坐标列表是否形成矩形?

转载 作者:行者123 更新时间:2023-11-28 22:31:32 25 4
gpt4 key购买 nike

我目前正在尝试弄清楚如何检查我的列表,例如:

[[0, 0], [0, 1], [1, 0], [1, 1]]

像这样形成一个矩形:

A B
C D

A、B、C、D分别为列表的[0, 0]、[0, 1]、[1, 0]和[1, 1]。这个想法当然是做一些通用的事情,比如:

[[0, 0], [0, 1], [0, 2], [0, 3], [1, 0]]

==> X X X X
X

应该返回 false。

有没有我可以使用的数学概念?或者也许我以错误的方式问这个问题,并且有一种我看不到的明显方式!无论如何,非常感谢任何帮助!

最佳答案

是的,您可以利用多种属性来完成此任务。

首先,当然是矩形恰好有四个顶点;你的第二份名单应该仅仅因为这些理由而被拒绝。 :-)

否则,您可以检查边的坡度。平行四边形的对边平行。从(x1,y1)到(x2,y2)的线段的斜率为

m = (y2 - y1) / (x2 - x1)

一旦你确认你有一个平行四边形,你需要检查相邻边是否垂直。这些线的斜率的乘积为 -1。因此,如果您已经计算了 m1 到 m4 的四个斜率,并验证了 m1=m3 和 m2=m4,那么剩下的就是检查任何一个角:

if m1*m2 = -1:
...

请注意,此处的相等性检查不应要求精确 匹配; float 四舍五入可以给你带来微小的差异。相反,也许

if abs(m1*m2 + 1) < 0.000001:

另一个可能会给您更直接结果的属性是,当且仅当对角线彼此平分时,图形才是矩形。取两条对角线并找到中点。

xmid = (x1 + x2)/2
ymid = (y1 + y2)/2

如果两个中点相同(或非常接近),那么您就有了一个矩形。

关于python - 如何知道坐标列表是否形成矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com