Segment.cpp

#include "Segment.h"


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


/// [ Constructor ]
Segment::Segment( Point point1, Point point2 ) :
    m_point1( point1 ),
    m_point2( point2 )
{
}


/// 平行移動する
void Segment::ParallelTranslation( Point point )
{
    m_point1 += point;
    m_point2 += point;
}

/// 同一点か?
bool Segment::IsSamePoint()
{
    return( m_point1 == m_point2 );
}


/// 傾き [ Property ]
double Segment::Slope::get()
{
    if( m_point1.X == m_point2.X )
    {
        // 2点が Y軸の同一点上にある場合 傾きは限りなく大きな値とする
        return Double::MaxValue;


        /// @note
        /// 本来ならば、Y軸に平行な直線には傾きは定義できないが、
        /// 演算の都合上 このように処理している。
    }

    return( m_point2.Y - m_point1.Y )
        / ( m_point2.X - m_point1.X );
}

/// Y切片 [ Property ]
double Segment::YIntercept::get()
{
    return( m_point1.Y - ( Slope * m_point1.X ) );
}