PositionVector.h
#pragma once
#include "Vector.h" // < BaseClass >
namespace Robotics
{
/// 位置ベクトル (3次元)
[ System::ComponentModel::TypeConverter( System::ComponentModel::ExpandableObjectConverter::typeid ) ] // 拡張可能なオブジェクト
public ref class PositionVector : public Vector
{
// Construction --------------------------------------------------------
public:
PositionVector();
PositionVector( double x, double y, double z );
PositionVector( System::Decimal x, System::Decimal y, System::Decimal z );
explicit PositionVector( Vector^ vector );
explicit PositionVector( System::Xml::XmlElement^ element );
// Operation -----------------------------------------------------------
public:
bool IsInOrigin() { return IsZeroVector(); }
virtual System::String^ ToString() override;
System::Xml::XmlElement^ ToXml( System::Xml::XmlDocument^ document );
// Event ---------------------------------------------------------------
public:
event System::EventHandler^ ValueChanged; ///< 値の変更イベント
// Overload ------------------------------------------------------------
public:
static PositionVector^ operator+( PositionVector^ left, PositionVector^ right );
static PositionVector^ operator+( PositionVector^ positionVector, Vector^ vector );
static PositionVector^ operator+( Vector^ vector, PositionVector^ positionVector );
static PositionVector^ operator-( PositionVector^ left, PositionVector^ right );
static PositionVector^ operator-( PositionVector^ positionVector, Vector^ vector );
static PositionVector^ operator*( PositionVector^ positionVector, double scalar );
static PositionVector^ operator*( double scalar, PositionVector^ positionVector );
static PositionVector^ operator*( Matrix^ rotationMatrix, PositionVector^ positionVector );
static PositionVector^ operator/( PositionVector^ positionVector, double scalar );
// Attribute ===========================================================
private:
// static
literal int DefaultDimension = 3; ///< 既定の次元数
// Property ------------------------------------------------------------
public:
/// X方向の位置
property double X
{
double get()
{
return this[ 1 ];
}
void set( double value );
}
/// Y方向の位置
property double Y
{
double get()
{
return this[ 2 ];
}
void set( double value );
}
/// Z方向の位置
property double Z
{
double get()
{
return this[ 3 ];
}
void set( double value );
}
};
}