From 8b6eca29cf109d1bdf2e88c8b2ad3892fa88a6dc Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 19 Mar 2024 23:55:42 +0300 Subject: [PATCH] docs: clarify some rotation rules --- docs/source/affine-pre.rst | 19 ++++++++++++++++++- include/cglm/affine-pre.h | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/source/affine-pre.rst b/docs/source/affine-pre.rst index c166d14..35e2c3a 100644 --- a/docs/source/affine-pre.rst +++ b/docs/source/affine-pre.rst @@ -110,7 +110,24 @@ Functions documentation .. c:function:: void glm_rotate(mat4 m, float angle, vec3 axis) - rotate existing transform matrix around Z axis by angle and axis + rotate existing transform matrix around given axis by angle at ORIGIN (0,0,0) + + **❗️IMPORTANT ❗️** + + If you need to rotate object around itself e.g. center of object or at + some point [of object] then `glm_rotate_at()` would be better choice to do so. + + Even if object's model transform is identiy, rotation may not be around + center of object if object does not lay out at ORIGIN perfectly. + + Using `glm_rotate_at()` with center of bounding shape ( AABB, Sphere ... ) + would be an easy option to rotate around object if object is not at origin. + + One another option to rotate around itself at any point is `glm_spin()` + which is perfect if only rotating around model position is desired e.g. not + specific point on model for instance center of geometry or center of mass, + again if geometry is not perfectly centered at origin at identity transform, + rotation may not be around geometry. Parameters: | *[in, out]* **m** affine transform diff --git a/include/cglm/affine-pre.h b/include/cglm/affine-pre.h index 3c67445..f7ccf69 100644 --- a/include/cglm/affine-pre.h +++ b/include/cglm/affine-pre.h @@ -219,7 +219,7 @@ glm_rotate_z(mat4 m, float angle, mat4 dest) { * center of object if object does not lay out at ORIGIN perfectly. * * Using `glm_rotate_at()` with center of bounding shape ( AABB, Sphere ... ) - * would be an easy option to rotate around object if this is not work for you. + * would be an easy option to rotate around object if object is not at origin. * * One another option to rotate around itself at any point is `glm_spin()` * which is perfect if only rotating around model position is desired e.g. not