algorithm - 如何调整具有纵横比的旋转矩形的大小?

标签 algorithm math graphics rotation

我有一个点数组

PArr [0..3]

对应于矩形点,我知道如何围绕其中心旋转矩形,但我想在旋转角度 theta 后调整它的大小。

我在网上搜索过,但没有找到适用于旋转矩形的算法 关于我在鼠标移动操作中调整它的大小。

如何在保持矩形边长宽比的同时调整点的大小,我知道这是一个矢量问题,但我对此有点困惑?

最佳答案

使用变换矩阵。它们提供清晰的多重转换。

http://en.wikipedia.org/wiki/Transformation_matrix

在您的情况下,您需要 4 个矩阵:

  1. Translation (-sizeX/2, -sizeY/2) - 处理围绕矩形中心的进一步转换

  2. 旋转指定角度

  3. 按指定比例缩放(矩形的纵横比将保持不变!)

  4. 翻译 (sizeX/2, sizeY/2) - 恢复第一个定位

将这 4 个矩阵相乘并将结果应用于矩形点。哦,您的矩形必须以 (0, 0) 为原点才能应用矩阵。如果矩形的原点具有 (x0, y0) 坐标,请使用

(-x0 - sizeX/2, -y0 - sizeY/2) 第一个矩阵

(x0 + sizeX/2, y0 + sizeY/2)第四个

关于algorithm - 如何调整具有纵横比的旋转矩形的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8118745/

相关文章:

算法 : Interesting diffing algorithm

algorithm - 重叠图片的最佳算法

algorithm - 检测物体之间距离的最快方法?

math - 最大化受二次约束的线性目标

objective-c - 连接两个 NSBezierPath

algorithm - 找出 64 位数量中设置了哪个位的有效方法

algorithm - 线段树正确但查询输出不正确

java - 线性方程重新排列

java - 用 Java 绘制 pacman

c++ - 在 OpenGL 中旋转一个对象在它自己的轴上