本文整理汇总了C++中Matrix4x4::PreRotate方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix4x4::PreRotate方法的具体用法?C++ Matrix4x4::PreRotate怎么用?C++ Matrix4x4::PreRotate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix4x4
的用法示例。
在下文中一共展示了Matrix4x4::PreRotate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Rotate
/*
* Rotate this transform around the vector specified by [x], [y], [z].
* If [local] is true, perform in local space, otherwise perform in world space. If
* world space is used, it takes into account the aggregated transform of the scene
* object's ancestors.
*/
void SceneObjectTransform::Rotate(Real x, Real y, Real z, Real a, Bool local) {
if (!local) {
Matrix4x4 rotMat;
rotMat.PreRotate(x, y, z, a);
Transform worldTrans;
worldTrans.SetTo(rotMat);
Transform localTrans;
GetLocalTransformationFromWorldTransformation(worldTrans, localTrans);
this->TransformBy(localTrans);
}
else {
Transform::Rotate(x, y, z, a, true);
}
}
示例2: RotateAround
/*
* Rotate around a specific point and orientation vector.
*
* The point is specified by [px], [py], and [pz].
*
* The orientation vector is specified by [ax], [ay], and [az].
*
* The parameter [local] determines whether local or world space is used.
* If world space is used, it takes into account the aggregated transform
* of the scene object's ancestors.
*/
void SceneObjectTransform::RotateAround(Real px, Real py, Real pz, Real ax, Real ay, Real az, Real angle, Bool local) {
if (!local) {
Matrix4x4 worldTransMat;
worldTransMat.PreTranslate(-px, -py, -pz);
worldTransMat.PreRotate(ax, ay, az, angle);
worldTransMat.PreTranslate(px, py, pz);
Transform worldTrans;
worldTrans.SetTo(worldTransMat);
Transform localTrans;
GetLocalTransformationFromWorldTransformation(worldTrans, localTrans);
this->TransformBy(localTrans);
}
else {
Transform::RotateAround(px, py, pz, ax, ay, az, angle, true);
}
}