-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document angles #87
Comments
Hi Chip -- RyanM pointed me at this while I was trying to find a clean way to handle the problem of calculating velocities of a point on a rigid body:
I can of course get around this by dividing by radians(1):
But, it looks messy to the physics folks, even if it's strictly correct from a units and typing standpoint. Is there a convention / pattern to make this look nicer? |
There's two! 🙃 The first step is to confront the core question: if angles are "really" dimensioned, then why does basically-all-of-physics work? A good mental model for this is that setting radians to 1 is a kind of "natural units" system, akin to "setting" On this mental model, if we restore angles' dimensions, then we should expect to see some constants pop up in our equations, just as I know of two very serious attempts to reconcile the SI with dimensioned angles, both published in 2021. In no particular order:
There is no publicly freely available PDF for the latter, but I suspect if you emailed the author, he'd be glad to provide a copy. 🙂 Both papers are well worth a read. There are various tradeoffs involved in choosing either system. For example, the Quincey approach seems to treat energy as being fundamental, and preserves the form of the torque/energy equation. From a programming point of view, it also makes it easy to distinguish energy from torque, as it uses J/rad for the latter instead of N*m (which is dimensionally equivalent to energy despite being a distinct concept). Leonard's approach, on the other hand, preserves the familiar definition of quantities such as torque and angular momentum. It also has a distinct practical advantage, in that the translation to dimensionally correct equations is much more mechanical: you simply replace any angular quantity In practice, what you do is:
Last point (in a separate section because it's unrelated): when you do your multiplying or dividing by 1 radian, I suggest using a constant, instead of constexpr auto THETA_C = make_constant(Radians{}); This will give you maximum flexibility w.r.t. the underlying numeric types (the "rep"). Or, if it's more readable, you could use the built-in unit symbol for radians, // In a `.cc` file:
using ::au::symbols::rad; Then you could just multiply or divide by |
As with most every other mature units library, we've realized that angles should be included as first class participants in dimensional analysis. This conflicts with the widely held assumption that angles are "really" or "intrinsically" dimensionless. We owe it to our users to explain this situation. The specific deliverables should be:
A "how-to" guide to explain precisely how to update equations with angular quantities. This should include a table with a column for the conventional formulae, and a column for each of the Leonard and Quincey conventions.
A "discussion" page explaining:
The text was updated successfully, but these errors were encountered: