E-鸡算几何_2023牛客寒假算法基础集训营1 (nowcoder.com)
给一个L形的线段ABC, 判断能否通过平移和旋转得到形状 DEF。
第三种操作只有将ABC沿 AB 或 BC 轴反转得到的 DEF 才无法被平移和旋转得到。故我们需要判断是否 DEF 为 ABC 的反转。
对于这个问题可以用叉积来判断线段拐向。
这是二维叉积的几何意义, 其结果是一个向量。而在本题中需要用到这样一个性质:
如果 BA 在 BC 向量的逆时针旋转180度范围内, 叉积是正值, 否则若 在 360-180 度内, 叉积是负值。而反转的操作正好会让原本在 180 度范围内的 BA, 翻过去到 360-180度内, 叉积的结果会改变。
因此可以通过先计算原本ABC的叉积, 然后计算DEF的叉积, 判断是否相等即可。
浮点数判断相等不能简单使用==, 需要设定 一个误差值eps, 一般为1e-5。