SVG中旋转矩形对应假想框压缩后的尺寸计算咨询
SVG旋转矩形压缩后的尺寸计算方案
问题明确
已知原矩形参数:宽w=100px、高h=100px,旋转角度r=45°,被一个最小包围框(假想框)容纳。将该包围框缩小后,求适配新包围框的矩形尺寸。
核心几何逻辑
旋转矩形的最小包围框尺寸,由原矩形的宽高和旋转角直接决定,公式如下:
- 包围框宽度:
W = w×cosθ + h×sinθ - 包围框高度:
H = w×sinθ + h×cosθ
其中θ为旋转角度(注意计算工具的单位匹配,弧度/角度需统一),45°时cosθ=sinθ≈0.7071,代入原参数可得原包围框的宽高均为100×0.7071 + 100×0.7071≈141.42px。
缩小包围框后的矩形尺寸计算
假设缩小后的包围框宽为W'、高为H',要保持旋转角度不变,新矩形的宽w'、高h'满足以下线性方程组:
W' = w'×cosθ + h'×sinθ H' = w'×sinθ + h'×cosθ
解方程组可得通用公式:
w' = [(W' + H')/(cosθ + sinθ) + (W' - H')/(cosθ - sinθ)] / 2 h' = [(W' + H')/(cosθ + sinθ) - (W' - H')/(cosθ - sinθ)] / 2
针对你的场景简化计算
因为原矩形是正方形,旋转45°后包围框也是正方形,缩小后W'=H',公式可简化为:w' = h' = W'/(cosθ + sinθ)
若包围框整体宽高各缩小50px:
W'=141.42-50≈91.42px,代入得w'=h'≈91.42/1.4142≈64.64px若包围框每边向内缩进50px(总宽高各减少100px):
W'=141.42-100≈41.42px,代入得w'=h'≈41.42/1.4142≈29.29px
额外说明
无需单独考虑skew变换,因为旋转后的几何关系已通过三角函数直接体现,上述公式适用于任意旋转角度的矩形,只要替换对应的cosθ和sinθ值即可。
内容的提问来源于stack exchange,提问作者ghtx280
相关产品推荐
相关产品推荐

