我刚刚开始在XNA中提出有关轮换的问题.当您将矢量乘以XNA中的旋转矩阵时,它会逆时针旋转.我明白了.
但是,让我举一个例子,说明我没有得到的.假设我将随机艺术资产加载到管道中.然后我创建一些变量,以便在更新方法运行时将每个帧递增2弧度(testRot + = 0.034906585f).我困惑的主要是,资产在这个屏幕空间顺时针旋转.这让我感到困惑,因为旋转矩阵将逆时针旋转矢量.
另外一件事,当我指定我的位置向量的位置,以及我的起源时,我明白我在旋转原点.我是否假设有垂直轴穿过该资产的来源?如果是这样,轮换从哪里开始?换句话说,我是从Y轴还是x轴的顶部开始旋转?
And*_*ell 11
XNA SpriteBatch在Client Space中工作."向上"是Y-,而不是Y +(如笛卡尔空间,投影空间,以及大多数人通常选择的世界空间).这使得旋转显示为顺时针(不像在笛卡尔空间中那样逆时针).旋转产生的实际坐标是相同的.
旋转是相对的,因此它们并不真正从任何指定位置"开始".
如果使用像sin或cos或等数学函数atan2,则绝对角度始终从X +轴开始为零弧度,正旋转方向向Y +旋转.
SpriteBatch看起来像这样的操作顺序:
SourceRectangle)相同.SpriteBatch.Begin这会将精灵放在客户空间中.
最后,将矩阵应用于每个批次,以将客户空间转换为GPU使用的投影空间.(投影空间从视口左下角的(-1,-1)到右上角的(1,1).)