You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何计算45°旋转矩形中指定蓝线的距离?

旋转45°矩形的蓝线距离计算方法

咱们先统一几个基础设定,方便后续计算:

  • 设原始矩形的长为 a,宽为 b(你可以直接替换成你实际的矩形尺寸)
  • 矩形是绕自身中心旋转45°的,旋转角度θ=45°,对应的三角函数值:cos45°=sin45°=√2/2≈0.7071

因为你没附上示意图,我就针对两种最常见的蓝线场景来讲解,你可以对应自己的图来匹配:

场景1:蓝线是旋转后矩形在全局坐标系下的垂直/水平总跨度

比如蓝线是从矩形最顶端到最底端的垂直距离(或者最左端到最右端的水平距离),计算逻辑如下:

  1. 旋转后,矩形的顶点在全局坐标系中的极值坐标(最高/最低、最左/最右)由原矩形的长和宽共同决定
  2. 总跨度的计算公式为:(a + b) * √2 / 2
    • 举个例子:如果原矩形长4,宽2,代入得(4+2)*0.7071≈4.2426,这就是旋转后矩形的垂直/水平总跨度

场景2:蓝线是外接正方形(边垂直于坐标轴)与旋转矩形之间的间隙距离

如果蓝线是指外接正方形的边到旋转矩形对应边的垂直距离,计算步骤如下:

  1. 先算出外接正方形的半边长:(a + b) / (2*√2)
  2. 再算出旋转矩形的“外接圆”半径(即矩形中心到任意顶点的距离):√(a² + b²)/2
  3. 间隙距离就是半边长减去外接圆半径在垂直/水平方向的投影(因为旋转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,这就是间隙的宽度

通用方法:针对任意蓝线的计算逻辑

如果你的蓝线不属于上面两种场景,通用的计算思路是坐标变换+点到直线/点到点距离公式

  • 第一步:把原矩形的所有顶点坐标用旋转公式转换为旋转后的坐标:
    旋转公式(绕原点旋转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

火山引擎 最新活动