AngleRange.cpp

#include "AngleRange.h"


using namespace Robotics;
using namespace System;
using namespace System::Diagnostics;


/// [ Constructor ]
AngleRange::AngleRange( double minimum, double maximum ) :
    m_minimum( Angle( minimum ) ),
    m_maximum( Angle( maximum ) )
{
}

/// [ Constructor ]
AngleRange::AngleRange( Angle minimum, Angle maximum ) :
    m_minimum( minimum ),
    m_maximum( maximum )
{
}


/// 等価演算子 == [ Operator Overloading ]
bool AngleRange::operator==( AngleRange% left, AngleRange% right )
{
    return ( left.m_minimum == right.m_minimum )
        && ( left.m_maximum == right.m_maximum );
}

/// 不等価演算子 != [ Operator Overloading ]
bool AngleRange::operator!=( AngleRange% left, AngleRange% right )
{
    // 等価演算の否定を返す
    return !( left == right );
}

/// 範囲内にあるか?
bool AngleRange::IsWithinRange( Angle val )
{
    return ( m_minimum <= val ) && ( val <= m_maximum );
}


/// 範囲を拡張する
void AngleRange::ExpandRange( Angle value )
{
    if( m_maximum < value )
    {
        // 上限より大きいならば、それを上限に設定する
        m_maximum = value;
    }

    if( value < m_minimum )
    {
        // 下限より小さいならば、それを下限に設定する
        m_minimum = value;
    }
}


/// インスタンスの説明を文字列で返す
System::String^ AngleRange::ToString()
{
    return String::Format( "{0} {1}", m_minimum, m_maximum );
}