geometry - 矩形、正方形、圆形、三角形等常见几何形状的充分条件是什么?以及如何以编程方式检查它?
问题描述
例如,给定 4 个点,很难(至少对我来说)检查它们是否形成一个矩形,因为编写代码来证明两条边之间的 90 度并不容易。
你会怎么做?你觉得呢?你有没有什么想法?
解决方案
给定: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)
推荐阅读
- javascript - 引导轮播指示器可防止事件冒泡
- asp.net-core-webapi - 如何以角度10发送文件以及formdata中的数据
- python - 无法使用 spyder ide 在 python 3 上安装 PyQt5
- php - 在laravel中完成付款后如何重定向到帖子页面
- java - 在spring应用程序中使用onAuthenticationSuccess登录页面后将用户重定向到原始url
- javascript - 使用自定义 keras 模型识别 tensorflowjs 中的对象
- java - 构建器模式的替代方案
- javascript - 用新行显示 json 表数据
- python - 使用 Python 存储 L2 刻度数据
- linux - Logstash - 匹配文件名