我这里有一些 C# 代码
//take a world Vector2D and make it a relative Vector2D
public Vector2D WorldToRelative(Vector2D world)
{
Matrix mat = new Matrix();
PointF[] Vectors = new PointF[1];
Vectors[0].X = world.X;
Vectors[0].Y = world.Y;
mat.Rotate(-m_angle / (float)Math.PI * 180.0f);
mat.TransformVectors(Vector2Ds);
return new Vector2D(Vectors[0].X, Vectors[0].Y);
}
问题是安卓的矩阵似乎没有旋转和变换矢量。
它具有前后旋转和映射矢量。
我该怎么做才能将此代码正确移植到安卓?
谢谢
Android有一个很棒的Matrix
类;只需使用mMatrix.setRotate()
和mMatrix.setTranslate()
即可进行旋转和平移。 如果需要缩放,请使用 mMatrix.setScale()
。
很多安卓功能都以"set"为前缀,所以.rotate()
变得.setRotate()
。 只需要一点点习惯!
旋转、缩放和平移都在 http://developer.android.com/reference/android/opengl/Matrix.html。 它们只是返回一个浮点数[]。 您可能需要将向量放入矩阵中才能使用这些方法。 您可能需要使用矩阵的转置,具体取决于 Android 的工作方式。