证明四点构成矩形
今天在算法群里有人提出一个问题:
在二维数轴上给四个点的坐标,证明四点构成矩形。
这道题算是一道数学题,解决方案有很多:
- 两对角线交点到四点距离相等
- 某点与其他三点的距离的勾股定理成立且 ab//cd 或最长距离的点在其他两点之间
- 一个点到三个点之间的斜率。
对角线交点
在学校学几何的时候,我们知道矩形的对角线相交点到四个角的距离相等,可以用这个方法求解。
首先要计算对角线相交点的坐标,然后分别计算两点之间的距离
这的解法是很多人都能想到的,思路很简单。
勾股定理&&($ab//dc$||($k_c$<$k_b$&&$k_c$>$k_d$)||($\overlinesegment{p_a’ p_c} \parallel \overlinesegment{p_b p_d}$))
这个方法巧妙的把四个点的问题转化为直角三角形边的问题。为什么可以这么做?
首先,要形成矩形,就必须邻边两两垂直,由垂直由能想到直角三角形。只要三条线段构成直角三角形,就成功了一大半。
然后用三种办法证明点 c 能和其他三点构成矩形。方法有三,思路也各有不同。
$ab//dc$ || $ac//db$
相对的两条边两两平行与上面的相邻角是直角就能证明是矩形。
$k_c$<$k_b$&&$k_c$>$k_d$
斜率$k_c$在$k_b$和$k_d$之间,只要 c 点在 bd 之间就构成矩形,但是这要求 a 点是左下角或者左侧。
$\overlinesegment{p_a’ p_c} \parallel \overlinesegment{p_b p_d}$
换个思路,我们只要求出点 a 与线段 bd 的对称点$p_a’$与点 c 构成的线段与点 b 与点 c 构成的线段平行,也可证明是矩形。
斜率求解
这个方法其实就全部用斜率求解了。
结合方法$\overlinesegment{p_a’ p_c} \parallel \overlinesegment{p_b p_d}$和$\overlinesegment{p_a p_b} \bot \overlinesegment{p_c p_d}$,就能证明四点构成矩形。
证明四点构成矩形
https://bubao.github.io/posts/b7306edb.html