【问题标题】:Getting The current Rotation of a Matrix - using a library?获取矩阵的当前旋转 - 使用库?
【发布时间】:2013-10-20 08:42:30
【问题描述】:

首先让我们说我很久以前就忘记了我的大部分数学。我不需要深入了解它。问题已被提出并回答(请参阅链接),但我不想派生自己的功能,是否存在现有功能?下图显示了我旋转 45 度的矩阵。有没有 方法可以插入 0.707 数字并返回 45 ?目前我正在自己跟踪旋转(简单的解决方案),但我更喜欢一个函数来推导出 45 度

question 7291053

Matrix Rotation

【问题讨论】:

  • 尝试计算 sin(45)

标签: java android matrix rotation


【解决方案1】:

该函数称为“arcus sinus”或arcsin(x)。对于 arcsin(0.707107) = 45 有一点舍入误差。

在 Java 数学库中,您必须另外将结果从 RAD 转换为 DEG,如下所示: Math.asin(0.707) * 180d / Math.PI

请注意,如here 所述,您会返回 -90° 和 +90° 之间的值。

如果您想知道您实际旋转的是哪个轴以及您在圆的哪个部分(下、上),那么您必须查看所有 9 个值。请参阅 here 每个轴的矩阵的外观。

【讨论】:

  • 谢谢 arcsin(0.707107) 度数为 45.0000177 度
  • 你也可以使用 atan2() 来表示 x、y 或 z,角度也可以
  • 维基百科链接中关于确定轴的整个段落仍然有些神秘。
  • 抱歉,我不得不选择另一个答案,两者都是正确的,但我认为另一个答案对找到这个的人会更有帮助。
【解决方案2】:

对于每个轴 x、y 和 z 的角度

[0][1][2]
[3][4][5]
[6][7][8]


double x = Math.atan2([7], [8]);
double y = Math.atan2(-[6],Math.sqrt((Math.pow([7],2)+Math.pow([8],2)));
double z = Math.atan2([0], [3]);

然后将您选择的乘以 180/PI

【讨论】:

  • 谢谢,这是一个很好的答案。我会把它标记为正确的,因为它更全面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 2021-07-17
  • 1970-01-01
相关资源
最近更新 更多