Skip to content

Rotation of Euler->Matrix different from Euler->Quat->Matrix? #63

@johannesvollmer

Description

@johannesvollmer

Hi :) I think there might be something wrong with the maths of rotation conversions. Perhaps I also made a mistake. This is the suspicious code:

My goal is to convert a Matrix4 from Euler rotation.

This code works for me:

  const quat = createSomeEuler(eulerDegrees).getQuaternion();
  return new Matrix4().identity().fromQuaternion(quat);

But this code does not work for me (but it would be preferable because it's likely more performant):

  const matrix = new Matrix4().identity();
  createSomeEuler(eulerDegrees).getRotationMatrix(matrix);
  return matrix;

Shouldn't they be equivalent? The objects appear at the wrong position when using the second snippet. I didn't check the matrix values. Or did I make a mistake?

I checked the source of getRotationMatrix, and it writes 16 values, so I assume using Matrix4 is correct.

My euler construction look like this:

  const x = degreesToRadians(eulerDegrees[0]);
  const y = degreesToRadians(eulerDegrees[1]);
  const z = degreesToRadians(eulerDegrees[2]);
  const order = Euler.ZYX;
  return new Euler(z, y, x, order)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions