Giriş
Bu sınıf iki tane farklı tipten dimension ikişkisini belirtmek için kullanılır. Örneğin mass ve time dimension gibi.
1.Dimension sınıfından unit tanımlanır. kilogram/seconds gibi.
2. Unit'lerden quantity tanımlanır. Quantity nesneleri ile aritmetik işlemler yapılabilr.
Tanımlama
Örnek
Elimizde şöyle bir kod olsun.
Bu sınıf iki tane farklı tipten dimension ikişkisini belirtmek için kullanılır. Örneğin mass ve time dimension gibi.
1.Dimension sınıfından unit tanımlanır. kilogram/seconds gibi.
2. Unit'lerden quantity tanımlanır. Quantity nesneleri ile aritmetik işlemler yapılabilr.
Tanımlama
Örnek
Kütle ve zaman boyutunu tanımlamak için şöyle yaparız. Bu dimension kütle ve zaman ile ilgili örneğin kilogram_per_seconds gibi bir birim tanımlamak için kullanılabilir.
typedef boost::units::derived_dimension<
boost::units::mass_base_dimension, 1,
boost::units::time_base_dimension, -1
>::type mass_flow_rate_dimension;
Elimizde şöyle bir kod olsun.
#include <boost/units/io.hpp>
#include <boost/units/systems/si.hpp>
#include <boost/units/systems/si/io.hpp>
namespace Units {
using namespace boost::units;
namespace SI = boost::units::si;
template <class U> using Quantity = quantity<U>;
typedef quantity<si::mass> Mass;
typedef quantity<si::time> Time;
typedef derived_dimension<mass_base_dimension, 1,
time_base_dimension, -1>::type MassFlowDimension;
typedef unit<MassFlowDimension, si::system> MassFlow;
typedef Quantity<MassFlow> MassFlowRate;
BOOST_UNITS_STATIC_CONSTANT(kilogram_per_seconds, MassFlow);
}
Şöyle yaparızUnits::MassFlowRate const mass_flow = 7.0*Units::kilogram_per_seconds;
Units::MassFlowRate const other_mass_flow = 1.0*(Units::SI::kilogram / Units::SI::second);
Units::Mass const total_flow = mass_flow * (1.0*Units::SI::second);
std::cout << "mass_flow: " << mass_flow << "\n";
std::cout << "other_mass_flow: " << other_mass_flow << "\n";
std::cout << "total_flow: " << total_flow << "\n";
Çıktı olarak şunu alırız.mass_flow: 7 kg s^-1
other_mass_flow: 1 kg s^-1
total_flow: 7 kg
Hiç yorum yok:
Yorum Gönder