调整任意原点矩形形状的大小
Resize rectangle shape at arbitrary origin
我有一个名为 Rectangle
的类,它是一个 2D 形状,原点位于其中心。 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
我的问题是:如何在调整矩形大小时任意选择原点?我显然需要同时执行平移和调整大小(考虑到真正的原点是矩形的中心),但我找不到适用于每个任意原点的正确组合。
我建议使用OpenGL,
无论如何,我的建议是,
resizeFrom(FROM, Vec2f){
resize in the normal way
getTop(), getBottom(), etc.. //get all new corner positions
Difference = FROM-newLeftCorner
Move all corner positions according to the Difference
commit
}
我希望我清楚
相关文章:
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 哪些库可以通过Opencv调整曝光率
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 调整布局上的 QGraphicsView 小部件的大小
- 如何在构建链接列表时调整头、尾指针
- 如何将旧的 C 样式 #define 映射与现代C++进行调整?
- 当您在此单词中搜索单词时调整字符数组的大小?
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何按另一个向量的方向调整一个向量?
- 使用大小调整大小调整 wxListView 的大小
- 调整大小和复制哈希表数组中的元素
- 调整任意原点矩形形状的大小