使用不同角度旋转矩阵

发布于 2025-01-07 20:28:42 字数 469 浏览 0 评论 0原文

我在网上搜索,看到很多关于如何将矩阵或图像旋转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));

I searched on internet and I saw lots of posts about how to rotate a matrix or an image by 90 or 180 degrees.But how can I rotate a matrix with 12 degrees or 162 degrees?
From:
enter image description here

To:

enter image description here

This image is rotated with ~35 degrees.

As you can see my matrix is the horse image and the circle is the rotation path, and the big rectangle is the new matrix created after rotation.

How can i achieve this? Thanks!

PS: This does not work

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千秋岁 2025-01-14 20:28:42

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

  • deg 应采用 弧度,而不是度: 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));

注意:铸造是拥抱。

Maybe your code would work if you saved x value before using it to compute y.

  • deg should be in radian not in degrees: 35*PI/180
  • you shouldn't compute with integers since cos and sin are between [0,1], think about floats.

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

Note: casting is huggly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文