JuliaGeometry / Rotations.jl

Julia implementations for different rotation parameterizations
https://juliageometry.github.io/Rotations.jl
MIT License
176 stars 44 forks source link

Docstrings for RotXYZ and similar could cause confusion with keyword arguments #294

Open kramsretlow opened 5 months ago

kramsretlow commented 5 months ago

Taking RotXYZ(roll=r, pitch=p, yaw=y) as an example, the docstring says

The keyword argument form applies roll, pitch and yaw to the X, Y and Z axes respectively, in XYZ order.

I began somewhat uninitiated on Euler angles, so it took me quite some time to realize that XYZ order refers the the order of matrix multiplication (RxRyRz), rather than the sequence of actually carrying out the rotations. I thought it meant first rotate around the X axis by r, then around Y by p, then around Z by y.

The first sentence in the same doscstring is super clear, indicating the sequence of rotations and which argument is used for each, so maybe this pattern could be used for the keyword arguments case too. Also perhaps it could be made clear that the keyword arguments essentially relate to argument order, e.g. RotZXY(a, b, c) == RotZXY(roll=b, pitch=c, yaw=a). Or maybe just use X, Y, Z as keyword arguments?

Thanks for your work on the package!

KronosTheLate commented 3 months ago

Not a maintainer (or even contributor) but I agree with your point. What do you think about the tables I created in this comment? That are obviously too much for a docstring, which is the issue here, but the docstrings could always refer to the readme as a reference for the "theory" required to understand the package.

kramsretlow commented 2 months ago

I like your table 😄 and thanks for the link to the other discussion. For me, everything became clear when I saw the mathematical expressions in the docs, so maybe just an example and a URL is enough for the docstrings. Adding intrinsic vs. extrinsic rotations to the mix adds more complexity, but good to see this is being discussed in the other issue.