如何计算45°旋转矩形中指定蓝线的距离?
旋转45°矩形的蓝线距离计算方法
咱们先统一几个基础设定,方便后续计算:
- 设原始矩形的长为
a,宽为b(你可以直接替换成你实际的矩形尺寸) - 矩形是绕自身中心旋转45°的,旋转角度θ=45°,对应的三角函数值:
cos45°=sin45°=√2/2≈0.7071
因为你没附上示意图,我就针对两种最常见的蓝线场景来讲解,你可以对应自己的图来匹配:
场景1:蓝线是旋转后矩形在全局坐标系下的垂直/水平总跨度
比如蓝线是从矩形最顶端到最底端的垂直距离(或者最左端到最右端的水平距离),计算逻辑如下:
- 旋转后,矩形的顶点在全局坐标系中的极值坐标(最高/最低、最左/最右)由原矩形的长和宽共同决定
- 总跨度的计算公式为:
(a + b) * √2 / 2- 举个例子:如果原矩形长4,宽2,代入得
(4+2)*0.7071≈4.2426,这就是旋转后矩形的垂直/水平总跨度
- 举个例子:如果原矩形长4,宽2,代入得
场景2:蓝线是外接正方形(边垂直于坐标轴)与旋转矩形之间的间隙距离
如果蓝线是指外接正方形的边到旋转矩形对应边的垂直距离,计算步骤如下:
- 先算出外接正方形的半边长:
(a + b) / (2*√2) - 再算出旋转矩形的“外接圆”半径(即矩形中心到任意顶点的距离):
√(a² + b²)/2 - 间隙距离就是半边长减去外接圆半径在垂直/水平方向的投影(因为旋转45°,投影值等于外接圆半径乘以
cos45°),最终公式:[(a + b) - √(a² + b²)] / (2*√2)- 还是用刚才的例子,长4宽2,代入得
[(4+2)-√(16+4)]/(2*0.7071)≈(6-4.4721)/1.4142≈1.5279/1.4142≈1.08,这就是间隙的宽度
- 还是用刚才的例子,长4宽2,代入得
通用方法:针对任意蓝线的计算逻辑
如果你的蓝线不属于上面两种场景,通用的计算思路是坐标变换+点到直线/点到点距离公式:
- 第一步:把原矩形的所有顶点坐标用旋转公式转换为旋转后的坐标:
旋转公式(绕原点旋转45°):
(如果矩形不是绕原点旋转,记得先做平移变换,把中心移到原点,旋转后再移回去)x' = x * cos45° - y * sin45° y' = x * sin45° + y * cos45° - 第二步:根据蓝线的定义,确定它是两点之间的距离,还是点到直线的距离:
- 两点距离:直接用距离公式
√[(x2'-x1')² + (y2'-y1')²] - 点到直线距离:先写出直线的一般式
Ax + By + C = 0,再用公式|Ax0' + By0' + C| / √(A² + B²)
- 两点距离:直接用距离公式
内容的提问来源于stack exchange,提问作者Martin




