OpenSiv3D  v0.6.5
C++20 framework for creative coding
s3d::Shape2D Class Reference

多角形作成ユーティリティ More...

#include <Shape2D.hpp>

Public Member Functions

SIV3D_NODISCARD_CXX20 Shape2D ()=default
 デフォルトコンストラクタ More...
 
SIV3D_NODISCARD_CXX20 Shape2D (Array< Float2 > vertices, Array< TriangleIndex > indices)
 頂点配列と頂点インデックスから多角形を作成します。 More...
 
const Array< Float2 > & vertices () const noexcept
 頂点座標の配列を返します。 More...
 
const Array< TriangleIndexindices () const noexcept
 頂点インデックスの配列を返します。 More...
 
const Shape2Ddraw (const ColorF &color=Palette::White) const
 図形を描画します。 More...
 
const Shape2DdrawFrame (double thickness=1.0, const ColorF &color=Palette::White) const
 図形の枠を描画します。 More...
 
const Shape2DdrawWireframe (double thickness=1.0, const ColorF &color=Palette::White) const
 図形を構成する三角形をワイヤフレームで描画します。 More...
 
Polygon asPolygon () const
 図形を Polygon として返します。 More...
 
Buffer2D toBuffer2D (const Vec2 &uvOrigin, const Vec2 &uvScale) const
 図形に UV 座標をマッピングして Buffer2D を作成します。 More...
 
Buffer2D toBuffer2D (Arg::center_< Vec2 > uvCenter, const Vec2 &uvScale) const
 図形に UV 座標をマッピングして Buffer2D を作成します。 More...
 
Buffer2D toBuffer2D (Arg::center_< Vec2 > uvCenter, const Vec2 &uvScale, double uvRotation) const
 図形に UV 座標をマッピングして Buffer2D を作成します。 More...
 
Buffer2D toBuffer2D (const Mat3x2 &uvMat) const
 図形に UV 座標をマッピングして Buffer2D を作成します。 More...
 

Static Public Member Functions

static Shape2D Cross (double r, double width, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 × の形状を作成します。 More...
 
static Shape2D Plus (double r, double width, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 十字形を作成します。 More...
 
static Shape2D Pentagon (double r, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 正五角形を作成します。 More...
 
static Shape2D Hexagon (double r, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 正六角形を作成します。 More...
 
static Shape2D Ngon (uint32 n, double r, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 正 N 角形を作成します。 More...
 
static Shape2D Star (double r, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 五芒星(★)を作成します。 More...
 
static Shape2D NStar (uint32 n, double rOuter, double rInner, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 星形を作成します。 More...
 
static Shape2D Arrow (const Vec2 &from, const Vec2 &to, double width, const Vec2 &headSize)
 矢印を作成します。 More...
 
static Shape2D Arrow (const Line &line, double width, const Vec2 &headSize)
 矢印を作成します。 More...
 
static Shape2D DoubleHeadedArrow (const Vec2 &from, const Vec2 &to, double width, const Vec2 &headSize)
 両端にアローヘッドを持つ矢印を作成します。 More...
 
static Shape2D DoubleHeadedArrow (const Line &line, double width, const Vec2 &headSize)
 両端にアローヘッドを持つ矢印を作成します。 More...
 
static Shape2D Rhombus (double w, double h, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 ひし形を作成します。 More...
 
static Shape2D RectBalloon (const RectF &rect, const Vec2 &target, double pointingRootRatio=0.5)
 長方形と三角形による吹き出し形状を作成します。 More...
 
static Shape2D Stairs (const Vec2 &base, double w, double h, uint32 steps, bool upStairs=true)
 階段の形状を作成します。 More...
 
static Shape2D Heart (double r, const Vec2 &center=Vec2{ 0, 0 }, double angle=0.0)
 ハート形を作成します。 More...
 
static Shape2D Squircle (double r, const Vec2 &center, uint32 quality)
 正方形と円の中間の形状 (Squircle) を作成します。 More...
 

Detailed Description

多角形作成ユーティリティ

Constructor & Destructor Documentation

◆ Shape2D() [1/2]

SIV3D_NODISCARD_CXX20 s3d::Shape2D::Shape2D ( )
default

デフォルトコンストラクタ

◆ Shape2D() [2/2]

SIV3D_NODISCARD_CXX20 s3d::Shape2D::Shape2D ( Array< Float2 vertices,
Array< TriangleIndex indices 
)

頂点配列と頂点インデックスから多角形を作成します。

Parameters
vertices頂点配列
indices頂点インデックス

Member Function Documentation

◆ Arrow() [1/2]

static Shape2D s3d::Shape2D::Arrow ( const Line line,
double  width,
const Vec2 headSize 
)
static

矢印を作成します。

Parameters
line矢印の始点と終点を表す線分
width矢印の幅(ピクセル)
headSize矢印の先端部分のサイズ(ピクセル)
Returns
作成した形状

◆ Arrow() [2/2]

static Shape2D s3d::Shape2D::Arrow ( const Vec2 from,
const Vec2 to,
double  width,
const Vec2 headSize 
)
static

矢印を作成します。

Parameters
from矢印の始点の座標
to矢印の終点の座標
width矢印の幅(ピクセル)
headSize矢印の先端部分のサイズ(ピクセル)
Returns
作成した形状

◆ asPolygon()

Polygon s3d::Shape2D::asPolygon ( ) const

図形を Polygon として返します。

Returns
図形の Polygon

◆ Cross()

static Shape2D s3d::Shape2D::Cross ( double  r,
double  width,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

× の形状を作成します。

Parameters
r基準となる円の半径(ピクセル)
widthパーツの幅(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ DoubleHeadedArrow() [1/2]

static Shape2D s3d::Shape2D::DoubleHeadedArrow ( const Line line,
double  width,
const Vec2 headSize 
)
static

両端にアローヘッドを持つ矢印を作成します。

Parameters
line矢印の始点と終点を表す線分
width矢印の幅(ピクセル)
headSize矢印の先端部分のサイズ(ピクセル)
Returns
作成した形状

◆ DoubleHeadedArrow() [2/2]

static Shape2D s3d::Shape2D::DoubleHeadedArrow ( const Vec2 from,
const Vec2 to,
double  width,
const Vec2 headSize 
)
static

両端にアローヘッドを持つ矢印を作成します。

Parameters
from矢印の始点の座標
to矢印の終点の座標
width矢印の幅(ピクセル)
headSize矢印の先端部分のサイズ(ピクセル)
Returns
作成した形状

◆ draw()

const Shape2D& s3d::Shape2D::draw ( const ColorF color = Palette::White) const

図形を描画します。

Parameters
color
Returns
*this

◆ drawFrame()

const Shape2D& s3d::Shape2D::drawFrame ( double  thickness = 1.0,
const ColorF color = Palette::White 
) const

図形の枠を描画します。

Parameters
thickness枠の太さ
color
Returns
*this

◆ drawWireframe()

const Shape2D& s3d::Shape2D::drawWireframe ( double  thickness = 1.0,
const ColorF color = Palette::White 
) const

図形を構成する三角形をワイヤフレームで描画します。

Parameters
thicknessワイヤフレームの太さ
color
Returns
*this

◆ Heart()

static Shape2D s3d::Shape2D::Heart ( double  r,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

ハート形を作成します。

Parameters
r外接する円の半径(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ Hexagon()

static Shape2D s3d::Shape2D::Hexagon ( double  r,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

正六角形を作成します。

Parameters
r外接する円の半径(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ indices()

const Array<TriangleIndex> s3d::Shape2D::indices ( ) const
noexcept

頂点インデックスの配列を返します。

Returns
頂点インデックスの配列

◆ Ngon()

static Shape2D s3d::Shape2D::Ngon ( uint32  n,
double  r,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

正 N 角形を作成します。

Parameters
nN 角形の N (3 以上)
r外接する円の半径(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ NStar()

static Shape2D s3d::Shape2D::NStar ( uint32  n,
double  rOuter,
double  rInner,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

星形を作成します。

Parameters
n星の先端の個数 (3 以上)
rOuter外側の頂点の中心からの距離(ピクセル)
rInner内側の頂点の中心からの距離(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ Pentagon()

static Shape2D s3d::Shape2D::Pentagon ( double  r,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

正五角形を作成します。

Parameters
r外接する円の半径(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ Plus()

static Shape2D s3d::Shape2D::Plus ( double  r,
double  width,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

十字形を作成します。

Parameters
r基準となる円の半径(ピクセル)
widthパーツの幅(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ RectBalloon()

static Shape2D s3d::Shape2D::RectBalloon ( const RectF rect,
const Vec2 target,
double  pointingRootRatio = 0.5 
)
static

長方形と三角形による吹き出し形状を作成します。

Parameters
rect長方形エリア
target吹き出しの先端の位置
pointingRootRatio吹き出しの三角形部分の大きさ [0.0, 1.0]
Returns
作成した形状

◆ Rhombus()

static Shape2D s3d::Shape2D::Rhombus ( double  w,
double  h,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

ひし形を作成します。

Parameters
wひし形の幅
hひし形の高さ
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ Squircle()

static Shape2D s3d::Shape2D::Squircle ( double  r,
const Vec2 center,
uint32  quality 
)
static

正方形と円の中間の形状 (Squircle) を作成します。

Parameters
r円の半径
center中心座標
quality品質
Returns
作成した形状

◆ Stairs()

static Shape2D s3d::Shape2D::Stairs ( const Vec2 base,
double  w,
double  h,
uint32  steps,
bool  upStairs = true 
)
static

階段の形状を作成します。

Parameters
base階段の基準位置
w階段全体の幅
h階段全体の高さ
steps階段の段数
upStairs右上に上る向きであるか
Returns
作成した形状

◆ Star()

static Shape2D s3d::Shape2D::Star ( double  r,
const Vec2 center = Vec2{ 0, 0 },
double  angle = 0.0 
)
static

五芒星(★)を作成します。

Parameters
r外接する円の半径(ピクセル)
center中心座標
angle時計回りの回転角度
Returns
作成した形状

◆ toBuffer2D() [1/4]

Buffer2D s3d::Shape2D::toBuffer2D ( Arg::center_< Vec2 uvCenter,
const Vec2 uvScale 
) const

図形に UV 座標をマッピングして Buffer2D を作成します。

Parameters
uvCenterUV 座標 (0.5, 0.5) をマッピングする位置
uvScaleマッピングする UV のスケール
Returns
Buffer2D

◆ toBuffer2D() [2/4]

Buffer2D s3d::Shape2D::toBuffer2D ( Arg::center_< Vec2 uvCenter,
const Vec2 uvScale,
double  uvRotation 
) const

図形に UV 座標をマッピングして Buffer2D を作成します。

Parameters
uvCenterUV 座標 (0.5, 0.5) をマッピングする位置
uvScaleマッピングする UV のスケール
uvRotationマッピングする UV の時計回りの回転
Returns
Buffer2D

◆ toBuffer2D() [3/4]

Buffer2D s3d::Shape2D::toBuffer2D ( const Mat3x2 uvMat) const

図形に UV 座標をマッピングして Buffer2D を作成します。

Parameters
uvMat頂点の座標から UV 座標を計算する行列
Returns
Buffer2D

◆ toBuffer2D() [4/4]

Buffer2D s3d::Shape2D::toBuffer2D ( const Vec2 uvOrigin,
const Vec2 uvScale 
) const

図形に UV 座標をマッピングして Buffer2D を作成します。

Parameters
uvOriginUV 座標 (0, 0) をマッピングする位置
uvScaleマッピングする UV のスケール
Returns
Buffer2D

◆ vertices()

const Array<Float2>& s3d::Shape2D::vertices ( ) const
noexcept

頂点座標の配列を返します。

Returns
頂点座標の配列

The documentation for this class was generated from the following file: