Skip to content

Convert a mat4 to a mat3 and back #33

@mokafolio

Description

@mokafolio

Hi,
I am not sure if I am missing something so please correct me if there already is an easier way to do this. Here's what I want to do:

  • Convert a mat4 transformation matrix to a mat3 rotation matrix (essentially dropping the translation part)
  • Convert it back to a mat4 with the translation part set to {0, 0, 0}

This is a pretty common operation for a bunch of 3D rendering related tasks. I have been doing that manually so far (the types are just linalg typedefs):


auto skyboxViewRot = Mat3f { transform.x.xyz(), transform.y.xyz(), transform.z.xyz() };
auto skyboxView = Mat4f { Vec4f { skyboxViewRot.x, 0.0f },
                                        Vec4f { skyboxViewRot.y, 0.0f },
                                        Vec4f { skyboxViewRot.z, 0.0f },
                                        Vec4f { 0.0f, 0.0f, 0.0f, 1.0f } };

I am pretty sure in glm the mat3 and mat4 constructors allow you to do this as one liners. Is there a similar way to achieve this in linalg? Otherwise I think it might be useful to add utilities for these operations (not sure if this is beyond the scope of the library but these seem to be very common operations to me).

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions