寻找特定的C ++技术

时间:2013-08-25 22:11:50

标签: c++

我不知道这是否适合StackOverflow问题,但这里是......

我有一个类,它有一个矩阵来表示它在3D空间中的变换,它有一个bool来检查这个矩阵是否需要更新(因为它似乎是一个昂贵的操作)。

基本上,我从:matrix4x4 center * matrix4x4 rotation * matrix4x4 position计算最终矩阵。

这个类有设置中心/旋转/位置的方法,所以每次设置一个新值时,我将bool设置为更新为true,下次程序请求最终矩阵时,我知道我是否有重新计算或不重新计算。

现在,问题在于我正在创建使用此类的对象,并且我希望它可以作为可能使用它进行编程的人的接口。 所以不要让程序员输入:

Object* myObject = new Object();
myObject->orientation.SetCenter(x1, y1, z1);
myObject->orientation.SetPosition(x, y, z);
myObject->orientation.SetRotation(angle, axis);

我想这样做,他们可以输入:

Object* myObject = new Object();
myObject->position.x = x;
myObject->position.y = y;
myObject->rotation.angle = angle;

位置旋转是具有浮点值的矢量类。 但只是通过更改这些值,我无法确定如何判断转换矩阵是否应该更新。

有没有好的和不贵的(性能对我来说很重要)处理这个问题?