android - Matrix中方法setSinCos的使用?

标签 android matrix

我们如何使用方法 setSinCos(float, float)?Android 文档说:

Set the matrix to rotate by the specified sine and cosine values.

但是比较含糊,比如不知道正余弦值的作用,google了一下,终于找到了这种方法的一些用法,没有评论,谢谢关注。

最佳答案

将齐次坐标(逆时针)旋转任意角度a,变换矩阵为:

[ cos(a)  -sin(a)  0 ]
[ sin(a)   cos(a)  0 ]
[   0        0     1 ]

如果您有 sin/cos 的结果,setSinCos(s, c) 将创建以下矩阵:

[ c  -s  0 ]
[ s   c  0 ]
[ 0   0  1 ]

您可能会问自己,为什么?好吧,考虑一下您想要将 Sprite 旋转到由两点之间的斜率确定的任意角度的情况。您可以使用 arctan 或 arccos 来确定角度,进行一些检查以确保您处于正确的象限中,然后将新角度提供给 setRotate()。 但是,当您已经有了 sin/cos 值而不需要角度(sin=dy/dist,cos=dx/dist)时,为什么?

setSinCos 满足了这个需求,这对程序员来说更容易,也更高效。

关于android - Matrix中方法setSinCos的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038219/

相关文章:

Android Studio连接重置错误?

android - 从 twitter api android 注销

java - 我想更改名为 .hannesdorfmann :swipeback 的库中的一些内容

r - 从矩阵中的每个点获取最大值

Java - ArrayList<Integer>[][] 可能吗?

android - 当用户单击 android 中的后退按钮时,我想结束整个应用程序

android获取其他屏幕方向的屏幕尺寸

Python:从列表创建协方差矩阵

python - np.dot() 与 Python 广播

matrix - Dymola/Modelica 中矩阵操作的最大尺寸是多少?