获取剪切和旋转矩形的边界框
Get the bounding box of a sheared and rotated rectangle
我可以使用这个公式得到剪切或旋转矩形的边界框
shearedW = Abs(Tan(shearX) * Height) + Width
shearedH = Abs(Tan(shearY) * Width) + Height
rotatedW = Abs(Cos(angle) * Width) + Abs(Sin(angle) * Height)
rotatedH = Abs(Sin(angle) * Width) + Abs(Cos(angle) * Height)
但是如何组合这些呢?我只需要知道宽度和高度。变换是通过剪切然后旋转形状来完成的。
只需构建用于组合变换的仿射矩阵并将其应用于顶点,然后获得 y 和 x 坐标的差异。
请注意,第一对公式是错误的 - 它给出了额外的宽度和高度。全宽:
shearedW = Width + Abs(Tan(shearX) * Height)
我可以使用这个公式得到剪切或旋转矩形的边界框
shearedW = Abs(Tan(shearX) * Height) + Width
shearedH = Abs(Tan(shearY) * Width) + Height
rotatedW = Abs(Cos(angle) * Width) + Abs(Sin(angle) * Height)
rotatedH = Abs(Sin(angle) * Width) + Abs(Cos(angle) * Height)
但是如何组合这些呢?我只需要知道宽度和高度。变换是通过剪切然后旋转形状来完成的。
只需构建用于组合变换的仿射矩阵并将其应用于顶点,然后获得 y 和 x 坐标的差异。
请注意,第一对公式是错误的 - 它给出了额外的宽度和高度。全宽:
shearedW = Width + Abs(Tan(shearX) * Height)