我想编写Custom Matrix类,这将允许我做以下事情:
Matrix m = Matrix().identity();
m.rotateAngle(30);
m.scale(2.0);
m.scale(1.5);
m.rotateAngle(30);
以上所有操作对我来说都很清楚,但现在我想要这样做: 我想写一个函数,如:setRotationAngle或setScale 这将设定值,无论当前值是什么
// for example:
m.setAngle(45); // clears the currentRotationAngle and then sets rotation to 45
有办法吗?或游戏引擎和这样的东西只是重建 矩阵,如果有人想设置一些属性?
是否有一些教程可以帮助我理解这个问题?
答案 0 :(得分:2)
我认为你并不真正理解转换矩阵是如何工作的以及它们是如何组合的。我可能错了,但如果你问这个,我怀疑它是。
你应该问问自己:我将如何回答这个问题(这是关于2D的)?
考虑原点的正方形。
旋转为4度 用(4,4)翻译 将旋转设置为10度。
你会在粗体步骤中做什么?对我来说,这完全没有意义。
所以,我想你将不得不重新组合一个矩阵。考虑使用一个矩阵堆栈,你可以通过弹出它们来推送矩阵,然后将它们弹回。