const UtilityMath::S_Vector2<T> UtilityMath::S_Vector2<T>::operator/(const UtilityMath::S_Vector2<T>& rAnother) const
{
    assert(rAnother.x_ != static_cast<T>(0));
    assert(rAnother.y_ != static_cast<T>(0));

    return S_Vector2(x_ / rAnother.x_, y_ / rAnother.y_);
}
//============================================================================
//! 基準位置の変更
dlBOOL C_DL2DFrameWorkText::SetOrigin(NODE_HANDLE handle , const S_Vector2& origin_S) const
{
	C_RenderCoreNode* node_CP = C_DL2DFrameWork::RENDER -> _GetNodeAddress(handle);
	if(node_CP == 0 || node_CP -> GetNodeType() != kTEXT_NODE){return dlFALSE;}

	dlBOOL flip_Flg;
	if(!C_DL2DFrameWork::RENDER -> _IsVirtualFlip(handle , flip_Flg))
	{
		return dlFALSE;
	}

	static_cast<C_TextNode*>(node_CP) -> SetOrigin(flip_Flg ? S_Vector2(origin_S.x , 1.f - origin_S.y) : origin_S);

	return dlTRUE;
}
const UtilityMath::S_Vector2<T> UtilityMath::S_Vector2<T>::operator/(T value) const
{
    assert(value != static_cast<T>(0));

    return S_Vector2(x_ / value, y_ / value);
}
const UtilityMath::S_Vector2<T> UtilityMath::S_Vector2<T>::operator*(T value) const
{
    return S_Vector2(x_ * value, y_ * value);
}
const UtilityMath::S_Vector2<T> UtilityMath::S_Vector2<T>::operator*(const UtilityMath::S_Vector2<T>& rAnother) const
{
    return S_Vector2(x_ * rAnother.x_, y_ * rAnother.y_);
}
UtilityMath::S_Vector2<T> UtilityMath::S_Vector2<T>::s_CreateWithAngle(T angle, T length)
{
    return S_Vector2(std::cos(angle), std::sin(angle)) * length;
}
UtilityMath::S_Vector2<T> UtilityMath::S_Vector2<T>::GetPerpendicular() const
{
    return S_Vector2(-y_, x_);
}
UtilityMath::S_Vector2<T> UtilityMath::S_Vector2<T>::GetInvert() const
{
    return S_Vector2(-x_, -y_);
}