Это довольно простое использование встроенных функций. Вы можете использовать объект AxisAngle
, чтобы умножить существующие Affine3f
. Просто отметьте, что ось должна быть нормализована:
Vector3f rotationAxis;
rotationAxis.setRandom(); // I don't really care, you determine the axis
rotationAxis.normalize(); // This is important, don't forget it
Affine3f randomAffine3f, rotatedAffine;
// Whatever was left in memory in my case,
// whatever your transformation is in yours
std::cout << randomAffine3f.matrix() << std::endl;
// We'll now apply a rotation of 0.256*M_PI around the rotationAxis
rotatedAffine = (AngleAxisf(0.256*M_PI, rotationAxis) * randomAffine3f);
std::cout << rotatedAffine.matrix() << std::endl; // Ta dum!!
Непонятный. Вы можете сделать это в любом порядке (но результаты, конечно, не будут одинаковыми). Я не думаю, что есть «лучший способ», зависит от ваших целей. – kebs
Хорошо, забудьте «лучший способ». Как применить «шаг» к Affine3f, полагая, что я уже знаю ось, о которой хочу передать, и угол, который я хочу передать? – user8709
Я очень новичок в Eigen, поэтому был бы очень оценен любой пример того, как накапливать вращения на существующий Affine3f. – user8709