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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions