1
我有一個名爲Rectangle
的類,它是一個二維形狀,原點位於其中心。 Vec2f
是一個float
二維向量。調整任意原點的矩形形狀大小
struct Rectangle {
Vec2f position, halfSize;
float getTop() { return position.y - halfSize.y; }
float getBottom() { return position.y + halfSize.y; }
// ... getLeft(), getRight(), ...
void setWidth(float mWidth) { halfSize.x = mWidth/2.f; }
// ... setHeight(), setHalfWidth(), ...
};
將尺寸調整爲Rectangle::setWidth
顯然將原點保持在中心位置。但是,我需要從不同的點任意調整矩形的大小。示例:我想從右下角調整矩形大小,以左上角爲原點。
理想的API將是這樣的:
Rectangle rect;
rect.resizeFrom(rect.getTopLeft(), Vec2f{150.f, 45.f});
// ^new origin ^new size
我的問題是:我怎麼能任意選擇一個原點,而調整的矩形?我顯然需要執行翻譯和調整大小(考慮實際原點是矩形的中心),但我無法找到適用於每個任意原點的正確組合。
@vit工作的呢? – Esqarrouth
它似乎工作,但它並沒有解決我原來的問題:我想從底部調整一個矩形*(想想快門)*:頂部的Y座標應該保持不變,而應該改變的只是底部Y座標。 –
要做到這一點,你可能需要一個完整的重組,其中不可能說沒有看到完整的代碼說。 如果在所有計算完成之前未顯示新矩形,則執行此操作的方式可能無關緊要 – Esqarrouth