//------------------------------------------------------------------------------ /// 値の表すベクトル (x, y) を指定の大きさに設定します。 /// /// @pre ベクトルがゼロベクトルではないことをあらかじめ確認する必要があります。 /// /// @param[in] aLength ベクトルの長さ。正の数を設定します。 void Vec2::normalize(float aLength) { HPC_LB_ASSERT_F(aLength, 0.0f); *this /= length(); *this *= aLength; }
//------------------------------------------------------------------------------ /// 中心位置と半径を与えて円を設定します。 /// /// @param[in] aPos 円の中心を表す座標。 /// @param[in] aRadius 半径。正の値を設定する必要があります。 void Circle::setup(const Vec2& aPos, float aRadius) { HPC_LB_ASSERT_F(aRadius, 0.0f); mPos = aPos; mRadius = aRadius; }
//------------------------------------------------------------------------------ /// 値の表すベクトル (x, y) を指定の大きさに設定します。 /// /// @pre ベクトルがゼロベクトルではないことをあらかじめ確認する必要があります。 /// /// @param[in] aLength ベクトルの長さ。正の数を設定します。 /// /// @return (x, y) を aLength の長さに設定したベクトル。 Vec2 Vec2::getNormalized(float aLength)const { HPC_LB_ASSERT_F(aLength, 0.0f); Vec2 aVec(*this); aVec.normalize(aLength); return aVec; }
//------------------------------------------------------------------------------ /// 値の表すベクトル (x, y) と引数 aVec の表すベクトルとの /// なす角の余弦を求めます。 /// /// @param[in] aVec なす角を計算するためのベクトル。 /// /// @return (x, y) と aVec とのなす角 (ラジアン) の余弦 (cos)。 float Vec2::cos(const Vec2& aVec)const { const float d = dot(aVec); const float l = length() * aVec.length(); HPC_LB_ASSERT_F(l, 0.0f); return d / l; }
//------------------------------------------------------------------------------ /// 値の絶対値が aLimitAbs を超えないように aValue を制限します。 /// /// @param[in] aValue 制限対象となる値。 /// @param[in] aLimitAbs 制限する値。絶対値で与えます。 /// /// @return |aValue| が aLimitAbs を超えないように制限した値を返します。 float Math::LimitAbs(float aValue, float aLimitAbs) { HPC_LB_ASSERT_F(aLimitAbs, 0.0f); return LimitMinMax(aValue, -aLimitAbs, aLimitAbs); }
//------------------------------------------------------------------------------ /// 中心座標をそのままにして、半径だけを設定します。 /// /// @param[in] aRadius 円の半径。正の値を設定する必要があります。 void Circle::setRadius(float aRadius) { HPC_LB_ASSERT_F(aRadius, 0.0f); mRadius = aRadius; }
//------------------------------------------------------------------------------ /// 初期値を指定してクラスのインスタンスを生成します。 /// /// @param[in] aPos 円の中心を表す座標。 /// @param[in] aRadius 半径。正の値を設定する必要があります。 Circle::Circle(const Vec2& aPos, float aRadius) : mPos(aPos) , mRadius(aRadius) { HPC_LB_ASSERT_F(aRadius, 0.0f); }