【发布时间】:2012-10-29 20:08:48
【问题描述】:
我有一个矩形,它必须始终旋转相同的度数。让我们称这个角度为 alpha (????)。
此矩形的宽度 (w) 和高度 (h) 可以变化。矩形必须始终适合在大矩形内旋转。它必须按比例放大或缩小以适合灰色矩形。
注意:Alpha 是 w 和水平线之间的角度。
所以,有3种矩形
w > h
w < h or
w = h
见下图。
我知道的:
- 大矩形的宽度为 R,高度为 K,我知道这两个值;
- w 和 h 未知;
- 矩形总是旋转的????学位;
- 我知道 w/h 的值。我称之为“ratioWH”;
- 红色矩形始终在灰色矩形上水平和垂直居中
我需要知道的:
- 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));
}
有什么线索吗?谢谢。
【问题讨论】:
-
你是什么意思 w 和 h 的最大值将适合 w 和 h 的每种情况的灰色矩形?你的绘图中哪个是角度 alpha?
-
我的意思是:红色矩形必须适合灰色矩形。我已经改变了那句话。 Alpha 是 w 与水平线的夹角。
标签: objective-c math