Closed brendanzab closed 8 years ago
Radians should be dimensionless, which is likely to cause trouble with tracking them in terms of units.
Is there a problem with doing something like this?
make_units! {
Angles, Unitless, one;
base {
Degree, degree, °;
}
}
Then you have degrees and can use Unitless
for radians. Using the SI system with 1 radian = m * m^-1
gives you the same thing for radians.
You can also add on any other units you would like to use.
Oh cool. I'll start working on the library now if that's ok.
What does Unitless
do?
It's the type for something with no units. Say you run
make_units! {
MS, Unitless, one;
base {
Meter, m, m;
Second, s, s;
}
}
Then you've created the MS
type with units Meter
and Second
. But these are really aliases, where Meter
is MS<P1, Z0>
and Second
is MS<Z0, P1>
. Then, Unitless
is MS<Z0, Z0>
where P1
is the type for the number 1 and ZO
is the type for the number 0.
There are some tutorials for using dimensioned here: http://paholg.com/project/dimensioned/
@droundy What do you mean by 'Radians should be dimensionless'? Is what I am saying not possible?
I just mean that radians have no units. It's the name for a dimensionless quantity. In this sense degrees are analogous to dozens or miles, it's a kind of a unit for things that are pure numbers, which don't actually have dimension. This sort of "unit" is tricky, because it is kind of like units, but doesn't work with the same kind of checking that we can use for real dimensions.
Of course, if you don't want to actually do math, you can define angle as a dimension without trouble, and then radians and degrees will both be dimensions. The problem arises, for instance, when you want to find an angle from the ratio of an arc length and a radius, or to write use the first few terms in the Taylor expansion of a trig function. Or if you want to integrate over the surface of a sphere.
On Wed, Dec 2, 2015, 6:30 PM Brendan Zabarauskas notifications@github.com wrote:
@droundy https://github.com/droundy What do you mean by 'Radians should be dimensionless'? Is what I am saying not possible?
— Reply to this email directly or view it on GitHub https://github.com/paholg/dimensioned/issues/5#issuecomment-161466659.
Hmm. It is really nice for documentation though, and picks up errors nicely if you mess up. Do you think dimensioned
is overkill for this then?
I would find dimensioned to be overkill if all you want is to document that you are taking degrees as input.
On Wed, Dec 2, 2015 at 7:01 PM Brendan Zabarauskas notifications@github.com wrote:
Hmm. It is really nice for documentation though, and picks up errors nicely if you mess up. Do you think dimensioned is overkill for this then?
— Reply to this email directly or view it on GitHub https://github.com/paholg/dimensioned/issues/5#issuecomment-161471725.
I am going to consider this closed. Feel free to re-open it if you have further questions, @bjz.
:+1:
Should these be in a separate crate? I would like to derive the Radians unit from SI (
m * m^-1
), and have a conversion to/from Degrees. Then also make trigonometry functions with the correct units, as I do incgmath::angle
.