7 Şubat 2018 Çarşamba

units

base_unit Sınıfı
Giriş
Şu satırı dahil ederiz
#include <boost/units/base_dimension.hpp>
#include <boost/units/io.hpp>
#include <boost/units/quantity.hpp>
#include <boost/units/unit.hpp>
#include <boost/units/base_unit.hpp>
#include <boost/units/systems/si/mass.hpp>

using namespace boost::units;
using namespace boost::units::si;
Tanımlama
Şöyle yaparız.
namespace units {

  struct slug_base_unit : base_unit<slug_base_unit, mass_dimension, 1>
  {
    static std::string name()               { return "slug"; }
    static std::string symbol()             { return "sl"; }
  };

  typedef slug_base_unit::unit_type slug_unit;

  /// unit constants
  BOOST_UNITS_STATIC_CONSTANT(slug, slug_unit);
  BOOST_UNITS_STATIC_CONSTANT(slugs, slug_unit);

  }
}
Constructor
Şöyle yaparız
quantity<slug_unit> A = 10.0 * slugs;
inch_base_unit Sınıfı
Bir base_unit'ten diğerine çevrim oranı için şöyle yaparız.
conversion_factor(imperial::inch_base_unit::unit_type(), si::meter_base_unit::unit_type())
mile_base_unit Sınıfı
milden metrik birime dönmek için şöyle yaparız.
#include <boost/units/base_units/us/mile.hpp>
#include <boost/units/base_units/metric/hour.hpp>

typedef boost::units::us::mile_base_unit::unit_type mile_unit;
typedef boost::units::metric::hour_base_unit::unit_type hour_unit;

typedef boost::units::divide_typeof_helper<mile_unit, hour_unit>::type miles_per_hour;
derived_dimension Sınıfı
derived_dimension Sınıfı yazısına taşıdım.

quantity Sınıfı
Giriş
Şu satırı dahil ederiz.
#include <boost/units/quantity.hpp>
Açıklaması şöyle.
A quantity represents a concrete amount of a unit. Thus, while the meter is the base unit of length in the SI system, 5.5 meters is a quantity of length in that system.
İmzası şöyle.
template<class Unit, class Y=double> class quantity;
İlk parametre unit (length,time,volume vs. gibi) ikinci parametre ise unit'in hangi tipten saklanacağıdır.

Örnek
Şöyle yaparız.
using boost::units::si::meters;
using Meter = boost::units::quantity<boost::units::si::length, double>;
Örnek
Şöyle yaparız.
typedef boost::units::quantity<Hertz_unit     , double> Hertz;
typedef boost::units::quantity<KilloHertz_unit, double> KilloHertz;
typedef boost::units::quantity<MegaHertz_unit , double> MegaHertz;
Daha önce tanımladığımız sabitleri quantit'ye çevirmek için şöyle yaparız.
Hertz      operator"" _Hz  (long double val) { return Hertz     (val *  Hz); }
KilloHertz operator"" _KHz (long double val) { return KilloHertz(val * KHz); }
MegaHertz  operator"" _MHz (long double val) { return MegaHertz (val * MHz); }
Kullanmak için şöyle yaparız.
Hertz      freq_1 = (10 *  Hz);
KilloHertz freq_2 = (10 * KHz);
MegaHertz  freq_3 = (10 * MHz);
// OR
Hertz      freq_4 = 10.0_Hz;
KilloHertz freq_5 = 10.0_KHz;
MegaHertz  freq_6 = 10.0_MHz;
// Convert between units
Hertz freq_7 = static_cast<Hertz>(10 * KHz);
Constructor
Constructor parametresi olarak sayı * unit verilir.
Örnek
Şöyle yaparız.
quantity<si::lenght> x = (10 * si::meters);
Şöyle yaparız.
quantity<si::foot_base_unit::unit_type> f (x); //32.8
Bazı çevrimleri yaptırmaz
quantity<si::time> t (x); //Metre zamana çevrilemez
Şöyle yaparız.
quantity<mass> C = 2.0 * kilograms;
Şöyle yaparız.
quantity<si::time> Time = 1.0 * second;
quantity<volume> vol = 1.0 * cubic_meters;
Kendi birimimiz ile şöyle yaparız.
typedef boost::units::quantity<mass_flow_rate_unit, double> mass_flow_rate;

BOOST_UNITS_STATIC_CONSTANT(kilogram_per_seconds, mass_flow_rate);
Scale Sınıfı
Şöyle yaparız. Aynı birime 1, 1000, ve 100,000 ile çarpılır.
typedef bu::make_scaled_unit<si::frequency, scale<10, static_rational<0> > >::type
  Hertz_unit;
typedef bu::make_scaled_unit<si::frequency, scale<10, static_rational<3> > >::type
  KilloHertz_unit;
typedef bu::make_scaled_unit<si::frequency, scale<10, static_rational<6> > >::type
  MegaHertz_unit;
Bazı sabitler tanımlanır. Şöyle yaparız.
BOOST_UNITS_STATIC_CONSTANT( Hz, Hertz_unit     );
BOOST_UNITS_STATIC_CONSTANT(KHz, KilloHertz_unit);
BOOST_UNITS_STATIC_CONSTANT(MHz, MegaHertz_unit );
unit Sınıfı
Giriş
Şu satırı dahil ederiz.
#include <boost/units/unit.hpp>
Tanımlama
unit tipi bir dimension + system bilgisine sahiptir.
Örnek
Şöyle yaparız.
typedef boost::units::derived_dimension<...>::type mass_flow_rate_dimension;

typedef boost::units::unit<mass_flow_rate_dimension,boost::units::si::system>
mass_flow_rate_unit;

Matematiksel İşlemler
units kütüphanesi matematiksel işlemler için destek veriyor.
abs metodu
Şöyle yaparız
units::abs(value)
fabs metod
Şöyle yaparız
units::fabs(value)

Hiç yorum yok:

Yorum Gönder