示例#1
0
        public Mat3 RotateAround(Vec3 axis, float angle)
        {
            // rotate into world space
            var quaternion       = Quat.FromRotationAxis(axis, 0).Conjugate();
            var worldSpaceMatrix = this.Multiply(FromQuaternion(quaternion));

            // rotate back to matrix space
            quaternion = Quat.FromRotationAxis(axis, angle);
            var qMat = Mat3.FromQuaternion(quaternion);

            worldSpaceMatrix = worldSpaceMatrix.Multiply(qMat);
            return(worldSpaceMatrix);
        }
示例#2
0
 public static Mat4 FromRigidTransform(RigidTransform3 transform)
 {
     return(Mat4.FromAffineTransform(Mat3.FromQuaternion(transform.rotation), transform.position));
 }