Terje Slettebų <[EMAIL PROTECTED]> writes: >>From: "David Abrahams" <[EMAIL PROTECTED]> > >> These are my (only slightly informed) opinions. I've heard Walter >> Brown talk about angle in this context, which was a big influence. >> >> Terje Slettebų <[EMAIL PROTECTED]> writes: >> >> > Regarding this angle dimension, should it be treated like the other >> > SI-dimensions? That is, say that you represent an SI quantity/unit >> > with an integer vector giving the exponents: >> > >> > template<int kg,int m,int s,int A,int K,int mol,int cd,int angle> >> > class quantity; >> > >> > If you multiply two quantities, you multiply the value and add the >> > exponents, so quantity<0,1,0,0,0,0,0,0>(10) * > quantity<0,1,0,0,0,0,0,0>(10) >> > = quantity<0,2,0,0,0,0,0,0>(100) (m * m = m^2) >> > >> > Would this hold for angle, as well? >> >> Yes. Angle is a dimensionless scalar (length/length). All its >> exponents are zero. > > Yes, Renej (in the posting I replied to) also pointed out that angle is a > dimensionless quantity. However, in their real-life experience, they found > it useful not to have it dimensionless, but instead having it as an > additional dimension, to be able to distinguish things like velocity and > angular velocity.
They are distinguished! Velocity is l/t and angular velocity is 1/t - the same as frequency. Makes perfect sense to me. > It was in this context that I wondered how angle - as a > dimension - should be treated. > >> > That is, does it make sense to say angle * angle = angle^2? >> >> Probably not, but only because angle * angle doesn't make much >> sense. Does that ever come up in real life? > > If it's a dimensionless quantity, it wouldn't matter (all exponents > would still be zero). However, as a dimension, it would give > angle^2. That's what I wondered about. > >> > I understand that e.g. angle/s (angular velocity) makes sense, but >> > should a library allow any combination with angle and the other >> > dimensions? >> >> Not arbitrarily: > > I meant - should it allow the same combinations as the other dimensions are > allowed. That is (simplified, using only one dimension): > > quantity<d1> * quantity<d2> = quantity<d1+d2> > quantity<d1> / quantity<d2> = quantity<d1-d2> > quantity<d> + quantity<d> = quantity<d> > quantity<d> - quantity<d> = quantity<d> > >> angle(pi/2) / mass(40); // OK >> angle(pi/2) + mass(40); // error > > Let's again cast it in the quantity<> example template I gave in the last > posting, to examine it. Let's say that the angle is expressed in radians. We > then have: > > template<int kg,int m,int s,int A,int K,int mol,int cd,int rad> > class quantity; > > typedef quantity<1,0,0,0,0,0,0,0> mass; > typedef quantity<0,0,0,0,0,0,0,1> angle; > > angle(pi/2) * mass(40) = quantity<1,0,0,0,0,0,0,1>(pi/2*40) (rad * kg) > angle(pi/2) + mass(40) > > The last one will be an error, as you said. > > I'm guessing that the answer to my question is, yes, angle, when expressed > as a dimension, may be treated like the other dimensions. I guess I can't play in that mind-space, because I can't get away from what seems to me like a clear truth: angle is dimensionless. If you give it dimension, you'll get confusing results (like no relationship between angular velocity and frequency). I wonder what happens to physics calculations when frequency is expressed as rad/t? -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost