我有 2 个矩形:红色和黑色及其尺寸。黑色矩形安装在红色矩形内(第一张图片)。我试图找到在将红色矩形旋转任意度数(此处为简单起见为 45 度)后计算黑色矩形尺寸的方法,以便它仍然适合红色矩形(第三张图像)。第二张图片显示了调整大小以适应红色矩形之前的黑色矩形。两个矩形的中心都在 (0,0)
我一直在看这个计算旋转矩形中最大的内接矩形但是这个解决方案只适用于黑色矩形是正方形。
有人能指出我正确的方向吗?谢谢。
设矩形中心为坐标原点(和旋转中心)。
大矩形尺寸为
2W
,2H
,小矩形2w
,2h
.
小矩形的第一个顶点(
A
)初始坐标为(w,h)
,拟合后变为(k*w,k*h)
,第二个顶点(B
):(-k*w,k*h)
,k
系数未知(我们只需要两个计算的顶点))
对于在范围
f
(和0..Pi/2
)范围内的旋转角度Pi..3*Pi/2
,可以包含A
的大矩形的边,有起点(F
)
px = W*cos(f)-H*sin(f)
py = W*sin(f)+H*cos(f)
和方向向量
dx = sin(f)
dy = -cos(f)
这边有参数方程
x = px + t * dx
y = py + t * dy
我们可以写出边包含
A
的等式
k*w = px + t * dx
k*h = py + t * dy
并解决未知数
k, t
k1 = (px * dy - py * dx) / (w * dy - h * dx)
可能包含 B 的类似面
px = W*cos(f)-H*sin(f) //same point
py = W*sin(f)+H*cos(f)
和方向向量
d2x = -cos(f)
d2y = -sin(f)
-k*w = px + t * d2x
k*h = py + t * d2y
k2 = (px * d2y - py * d2x) / (-w * d2y - h * d2x)
我们需要从
k1
和k2
中选择更小的有效值(也许有些结果只是无效的——负等)
角
f
在范围Pi/2..Pi
(和3*Pi/2..2*Pi
)与对应边的类似计算。
今晚对我来说太晚了,所以现在必须完成。