GaitGeneration by Graph Search
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
designlab::Polygon2 構造体final

2次元の多角形を表す構造体. [詳解]

#include <math_polygon2.h>

公開メンバ関数

constexpr Polygon2 ()
 
 Polygon2 (const std::vector< Vector2 > &vertex)
 
constexpr void AddVertex (const Vector2 &v)
 頂点を追加する関数.
 
bool AddVertexCheckForDuplicates (const Vector2 &v)
 頂点を追加する関数.他の頂点と重なっている場合は追加しない.
 
void RemoveVertex (const int index)
 頂点を削除する関数.遅いので多用するべきではない.
 
constexpr void RemoveLastVertex ()
 1番最後の頂点を削除する関数.
 
constexpr void Reset ()
 多角形をリセットする関数.
頂点を削除して,頂点数を0にする.
 
constexpr int GetVertexNum () const
 多角形の頂点数を返す関数.
 
constexpr Vector2 GetVertex (const int i) const
 頂点の座標を返す関数.
 
constexpr std::optional< Vector2GetVertexOpt (const int i) const
 頂点の座標を返す関数.std::optional を使っているので, 存在しない頂点を指定した場合は std::nullopt を返す.
 
constexpr float GetMaxX () const
 頂点の中で最大のx座標を返す関数.
 
constexpr float GetMinX () const
 頂点の中で最小のx座標を返す関数.
 
constexpr float GetMaxY () const
 頂点の中で最大のy座標を返す関数.
 
constexpr float GetMinY () const
 頂点の中で最小のy座標を返す関数.
 
bool IsConvex () const
 多角形が凸かどうか調べる関数.
 
bool IsInside (const Vector2 &point) const
 点が多角形の内部にあるかどうか調べる関数. 多角形が凸でない場合は正しく判定できない.
 
std::string ToString () const
 多角形のデータを文字列で出力する
 

詳解

2次元の多角形を表す構造体.


頂点は反時計回り,或いは時計回りに並んでいる必要がある. そうでない場合はいくつかの関数が正常に動作しない.

また,頂点の数は最大でkMaxVertexNum個までしか登録できない. これは動作の高速化のために確保した配列のサイズを固定しているためである. この値を変更する場合は,コード中のkMaxVertexNumの値を変更する必要がある.

なお,コード中の max 関数,min関数については以下を参照.

参照

math_polygon2.h38 行目に定義があります。

構築子と解体子

◆ Polygon2() [1/2]

constexpr designlab::Polygon2::Polygon2 ( )
inlineconstexpr

math_polygon2.h40 行目に定義があります。

◆ Polygon2() [2/2]

designlab::Polygon2::Polygon2 ( const std::vector< Vector2 > &  vertex)
explicit

math_polygon2.cpp17 行目に定義があります。

呼び出し関係図:

関数詳解

◆ AddVertex()

constexpr void designlab::Polygon2::AddVertex ( const Vector2 v)
inlineconstexpr

頂点を追加する関数.

引数
[in]v追加する頂点.
覚え書き
他の頂点と重なっている場合でも追加する.

math_polygon2.h50 行目に定義があります。

被呼び出し関係図:

◆ AddVertexCheckForDuplicates()

bool designlab::Polygon2::AddVertexCheckForDuplicates ( const Vector2 v)

頂点を追加する関数.他の頂点と重なっている場合は追加しない.

引数
[in]v追加する頂点の座標.
覚え書き
他の頂点と重なっている場合は追加しない. この処理の分だけ遅くなるので,重なることがない場合は AddVertex を使うこと.
戻り値
true追加できた,
false追加できなかった.

math_polygon2.cpp27 行目に定義があります。

◆ GetMaxX()

constexpr float designlab::Polygon2::GetMaxX ( ) const
inlineconstexpr

頂点の中で最大のx座標を返す関数.

戻り値
頂点の中で最大のx座標.

math_polygon2.h129 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ GetMaxY()

constexpr float designlab::Polygon2::GetMaxY ( ) const
inlineconstexpr

頂点の中で最大のy座標を返す関数.

戻り値
頂点の中で最大のy座標.

math_polygon2.h157 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ GetMinX()

constexpr float designlab::Polygon2::GetMinX ( ) const
inlineconstexpr

頂点の中で最小のx座標を返す関数.

戻り値
頂点の中で最小のx座標.

math_polygon2.h143 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ GetMinY()

constexpr float designlab::Polygon2::GetMinY ( ) const
inlineconstexpr

頂点の中で最小のy座標を返す関数.

戻り値
頂点の中で最小のy座標.

math_polygon2.h171 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ GetVertex()

constexpr Vector2 designlab::Polygon2::GetVertex ( const int  i) const
inlineconstexpr

頂点の座標を返す関数.

引数
[in]i頂点のインデックス.
戻り値
頂点の座標.
存在しない頂点を指定した場合は(0,0)を返す.

math_polygon2.h103 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ GetVertexNum()

constexpr int designlab::Polygon2::GetVertexNum ( ) const
inlineconstexpr

多角形の頂点数を返す関数.

戻り値
多角形の頂点数.

math_polygon2.h94 行目に定義があります。

被呼び出し関係図:

◆ GetVertexOpt()

constexpr std::optional< Vector2 > designlab::Polygon2::GetVertexOpt ( const int  i) const
inlineconstexpr

頂点の座標を返す関数.std::optional を使っているので, 存在しない頂点を指定した場合は std::nullopt を返す.

引数
[in]i頂点のインデックス.
戻り値
頂点の座標.存在しない頂点を指定した場合は std::nullopt を返す.

math_polygon2.h117 行目に定義があります。

呼び出し関係図:

◆ IsConvex()

bool designlab::Polygon2::IsConvex ( ) const

多角形が凸かどうか調べる関数.

戻り値
true凸.
false凹.

math_polygon2.cpp63 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ IsInside()

bool designlab::Polygon2::IsInside ( const Vector2 point) const

点が多角形の内部にあるかどうか調べる関数. 多角形が凸でない場合は正しく判定できない.

引数
[in]point調べる点
戻り値
bool 内部にあるなら true,外部にあるなら false
覚え書き
点が時計回り,反時計回りのいずれかの順番で頂点が並んでいる必要がある.
点が多角形の辺上にある場合は内部にあると判定する.
多角形が凸でない場合は正しく判定できない.

math_polygon2.cpp97 行目に定義があります。

呼び出し関係図:
被呼び出し関係図:

◆ RemoveLastVertex()

constexpr void designlab::Polygon2::RemoveLastVertex ( )
inlineconstexpr

1番最後の頂点を削除する関数.

覚え書き
頂点が1つもない場合は何もしない.

math_polygon2.h75 行目に定義があります。

呼び出し関係図:

◆ RemoveVertex()

void designlab::Polygon2::RemoveVertex ( const int  index)

頂点を削除する関数.遅いので多用するべきではない.

引数
[in]index削除する頂点のインデックス.
覚え書き
存在しない頂点を指定した場合は何もしない.
削除した頂点のインデックスは変わるので注意.

math_polygon2.cpp45 行目に定義があります。

呼び出し関係図:

◆ Reset()

constexpr void designlab::Polygon2::Reset ( )
inlineconstexpr

多角形をリセットする関数.
頂点を削除して,頂点数を0にする.

math_polygon2.h87 行目に定義があります。

◆ ToString()

std::string designlab::Polygon2::ToString ( ) const

多角形のデータを文字列で出力する

戻り値
多角形のデータを文字列で出力したもの

math_polygon2.cpp172 行目に定義があります。

呼び出し関係図:

この構造体詳解は次のファイルから抽出されました: