我有一个矩形,必须始终旋转相同的度数。让我们称这个角度为 alpha ()。
此矩形的宽度 (w) 和高度 (h) 可以变化。矩形必须始终适合在大矩形内旋转。它必须按比例放大或缩小以适合灰色矩形。
注意:Alpha 是 w 和水平线之间的角度。
所以,有 3 种矩形
w > h
w < h or
w = h
见下图。
我知道的:
- 大矩形的宽度为 R,高度为 K,我知道这两个值;
- w 和 h 未知;
- 矩形总是旋转度数;
- 我知道 w/h 的价值。我称之为“比率WH”;
- 红色矩形始终在灰色矩形上水平和垂直居中
我需要知道的:
- 对于 w 和 h 的每种情况,将适合灰色矩形的 w 和 h 的最大值。
- 点P的坐标,假设 0,0 在灰色矩形的左上角。
这是我到目前为止所做的,但这并没有给出正确的值:
CGPoint P = CGPointZero;
if (ratioWH > 0) { // means w > h
maxH = R / (ratioWH * fabsf(cosf(theta)) + fabsf(sinf(theta)));
maxW = maxH * ratioWH;
// P.x = 0.0f; // P.x is already zero
CGFloat marginY = (K - maxW * fabsf(sinf(theta)) - maxH * fabsf(cosf(theta))) / 2.0f;
P.y = marginY + maxW * fabsf(sinf(theta));
} else { // w <= h
maxW = K / (fabsf(cosf(theta) / ratioImagemXY) + fabsf(sinf(theta)));
maxH = maxW / ratioWH;
P.x = (R - maxW * fabsf(cosf(theta)) - maxH * fabsf(sinf(theta))) / 2.0f;
P.y = maxW * fabsf(sinf(theta));
}
任何线索?谢谢。