Пример #1
0
        public static Vector3R RotateReverse(Vector3R vector, QuaternionR quat, bool assumeUnitQuat)
        {
            Vector3    v      = new Vector3(vector.X, vector.Y, vector.Z);
            Quaternion q      = new Quaternion(quat.X, quat.Y, quat.Z, assumeUnitQuat ? 1 : quat.W);
            Vector3    result = Vector3.Transform(v, Quaternion.Conjugate(q));

            return(new Vector3R {
                X = result.X, Y = result.Y, Z = result.Z
            });
        }
Пример #2
0
        public static Vector3R TransformToWorldFrame(Vector3R vBody, Pose pose, bool assumeUnitQuat = true)
        {
            Vector3R translated = new Vector3R
            {
                X = vBody.X + pose.Position.X,
                Y = vBody.Y + pose.Position.Y,
                Z = vBody.Z + pose.Position.Z,
            };

            return(TransformToWorldFrame(translated, pose.Orientation, assumeUnitQuat));
        }
Пример #3
0
        public static float Magnitude(Vector3R vector)
        {
            Vector3 v = new Vector3(vector.X, vector.Y, vector.Z);

            return(v.Length());
        }
Пример #4
0
 public static Vector3R TransformToWorldFrame(Vector3R vBody, QuaternionR quat, bool assumeUnitQuat = true)
 {
     return(Rotate(vBody, quat, assumeUnitQuat));
 }
Пример #5
0
 public static Vector3R TransformToBodyFrame(Vector3R vWorld, QuaternionR quat, bool assumeUnitQuat = true)
 {
     return(RotateReverse(vWorld, quat, assumeUnitQuat));
 }