【问题标题】:rotate a matrix using different angles使用不同的角度旋转矩阵
【发布时间】:2012-02-21 14:46:50
【问题描述】:

我在网上搜索了很多关于如何将矩阵或图像旋转 90 或 180 度的帖子。但是如何将矩阵旋转 12 度或 162 度? 从:

收件人:

这张图片旋转了约 35 度。

如您所见,我的矩阵是马的图像,圆圈是旋转路径,大矩形是旋转后创建的新矩阵。

我怎样才能做到这一点?谢谢!

PS:这不起作用

int angle=35*Math.PI/180;
int x1 = (int)(x * cos(angle)) - (y * sin(angle));
int y1 = (int)(y * cos(angle)) + (x * sin(angle));

【问题讨论】:

  • 你使用什么语言?
  • java.I 只想使用像素为图形引擎旋转矩阵
  • 我会说您的第二个示例图像旋转了 -35 度或 325 度(正旋转通常是逆时针方向)。另外,您的变量名称现在有点误导,我将其称为“角度”或“弧度”,因为它现在表示以弧度表示的角度。

标签: java math matrix


【解决方案1】:

如果您在使用它来计算 y 之前保存了 x 值,那么您的代码可能会起作用。

  • deg 应该是 radian 而不是度数:35*PI/180
  • 您不应该使用整数进行计算,因为 cossin 介于 [0,1] 之间,请考虑浮点数。

float angle = 35*Math.PI/180;
int x1 = round(x * cos(angle) - y * sin(angle));
int y1 = round(y * cos(angle) + x * sin(angle));

注意:演员阵容非常好。

【讨论】:

  • 我更新了帖子。无论如何,这仍然不起作用。我得到 x1 或 y1 的 -1
  • 但是你没有用radian更新你的角度!
  • 我不能使用浮点数,因为我的矩阵使用整数作为索引
  • 是的,你可以在计算时使用浮点数,然后为你的矩阵得到一个四舍五入的值(即使角度应该是浮点数)。
  • 嗯。你能发布一个包含所有 for 循环的完整代码吗?例如使用带有 {{1,2,3},{4,5,6},{7,8 的 3X3 矩阵,9}} 并将其旋转 35 度。看看我发现了什么 (polymathprogrammer.com/2008/10/06/…)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
相关资源
最近更新 更多