Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.Units - Can't figure out how to use it
From: Brandon Olivares (programmer2188_at_[hidden])
Date: 2009-12-23 12:12:27


Steven,

Thanks a lot. I actually figured this out last night. I hadn't been paying
attention to the difference between base units and units, and assumed
light_seconds was a unit.

I have a few other questions now though.

It is able to do scaling of units I know, but let's say you want to use
kilometer for instance. It appears you cannot have two length units under
the same system (correct?), so would you have to create a new system just
for that unit?

More practically, I need to use most of the astronomical units, or at least
light years, parsecs, and astronomical units. It seems I can't put them
under the same system, so must I have a separate system for each of them, or
am I missing something?

Thanks,
Brandon

On 2009-12-23, Steven Watanabe wrote:
> AMDG
>
> Brandon Olivares wrote:
>> I've been reading the documentation for Boost.Units. I understand most
>> of what it is saying, but am still confused on how to do many things
>> with this library.
>>
>> Most of the examples are using that test_system.hpp. Does this mean
>> that you actually have to explicitly define the units you want to use?
>>
>> I am confused because I see the header files for the units I want to
>> use, e.g., light_year or astronomical_unit, but I can't figure out how
>> to actually use them. If I use
>> boost::units::astronomical::light_second, it cannot find it. I am able
>> to use the SI units just fine, such as:
>>
>> Quantity<si::length> l = 4.0 * si::meters;
>>
>> But beyond that, I'm lost.
>>
>> I also don't know which headers I should include. I don't know if
>> there's one or two headers that include all the basics I would need,
>> or if I have to include each of them individually.
>>
>
> There is no catch-all header.
>
>> Here's a simple program I was trying to write just to test
>> light_second, but do not know how to make it work or which headers to
>> include:
>>
>> int main()
>> {
>> using namespace boost::units;
>> using namespace boost::units::astronomical; using namespace std;
>>
>> quantity<light_second> l1 = 4.0 * light_second;
>>
>> cout << "l1 = " << l1 << endl;
>>
>> return 0;
>> }
>>
>
> #include <boost/units/base_units/astronomical/light_second.hpp>
> #include <boost/units/quantity.hpp>
> #include <boost/units/io.hpp>
> #include <iostream>
>
> typedef boost::units::astronomical::light_second_base_unit::unit_type
> light_second;
>
> int main()
> {
> using namespace boost::units;
> using namespace boost::units::astronomical; using namespace std;
>
> quantity<light_second> l1 = 4.0 * light_second();
>
> cout << "l1 = " << l1 << endl;
>
> return 0;
> }
>
> In Christ,
> Steven Watanabe
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users

--
Brandon
www.creatorspiritus.com
Blog and forum discussing living a Christ-centered life
Follow me on Twitter: http://twitter.com/devbanana

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net