SDXFrameWork 0.07 SDXFrameWork

- メインページ
- 関連ページ
- クラス

- 構成
- クラス階層
- 構成メンバ

全て クラス ネームスペース 関数 変数 列挙型 列挙型の値 ページ
Public メソッド | Static Protected メソッド | Protected 変数 | すべてのメンバ一覧
クラス SDX::Shapeabstract

位置情報を持つ図形の抽象クラス. [詳細]

`#include <Shape.h>`

SDX::Circle, SDX::Complex, SDX::Line, SDX::Point, と SDX::Rectに継承されています。

## Public メソッド
virtual bool | Hit (const Shape *shape) const =0
| 衝突判定. [詳細]
virtual bool | Hit (const Complex *complex) const =0
virtual bool | Hit (const Point *point) const =0
virtual bool | Hit (const Line *line) const =0
virtual bool | Hit (const Rect *rect) const =0
virtual bool | Hit (const Circle *circle) const =0
virtual void | SetPos (double X座標, double Y座標)=0
| 指定座標に移動. [詳細]
virtual Shape * | Clone (double x, double y) const =0
| 同じ形の図形を作る. [詳細]
void | SetZoom (double X拡大率, double Y拡大率)
| 拡大率を設定. [詳細]
void | MultiZoom (double 倍率)
| 拡大率を掛け算する. [詳細]
virtual void | MultiZoom (double X倍率, double Y倍率)=0
| 縦横別で拡大率を掛け算する. [詳細]
virtual void | Move (double X移動量, double Y移動量)=0
| 相対座標で移動. [詳細]
void | MoveA (double 距離, double 方向)
| 極座標で移動. [詳細]
virtual void | Draw (Color 描画色, int 透過率, Camera *座標変換Camera=0) const =0
| 描画する. [詳細]
virtual void | Rotate (double 回転する角度)=0
| 回転する. [詳細]
virtual void | SetAngle (double 指定角度)=0
| 角度を指定する. [詳細]
double | GetDirect (Shape *比較対象)
| 対象との角度を取得. [詳細]
double | GetDistance (Shape *比較対象)
| 対象との相対座標を取得. [詳細]
virtual double | GetX () const =0
| X座標を取得. [詳細]
virtual double | GetY () const =0
| Y座標を取得. [詳細]
virtual double | GetW () const =0
| 幅を取得. [詳細]
virtual double | GetH () const =0
| 高さを取得. [詳細]

## Static Protected メソッド
static bool | RectRect (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
| 矩形の交差判定. [詳細]
static bool | LineLine (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
| 線分の交差判定. [詳細]
static int | PointPoint (double x1, double y1, double x2, double y2)
| 二点間の距離を計算. [詳細]

## Protected 変数
double | zoomX
double | zoomY

## 説明

位置情報を持つ図形の抽象クラス.

//図形の当たり判定をする
bool SampleShape()
{
using namespace SDX;
System::Initialise("sample", 600, 400);
//図形を宣言する
Circle circle(10, 10, 100);
Rect rect(60, 60, 100, 100);
Line line(200, 100, PAI / 4, 300, 5);
//共通のインターフェースを持っている
Shape* shapes[3];
shapes[0] = &circle;
shapes[1] = &rect;
shapes[2] = &line;
while (System::Update())
{
circle.SetPos(Input::mouse.x,Input::mouse.y);
//Lineは回転可能
line.Rotate(0.01);
//ダブルディスパッチによる当たり判定
bool isHit[3];
isHit[0] = circle.Hit(&rect) || circle.Hit(&line);
isHit[1] = shapes[1]->Hit(shapes[0]) || shapes[1]->Hit(shapes[2]);
isHit[2] = shapes[2]->Hit(shapes[0]) || shapes[2]->Hit(shapes[1]);
for (int i = 0; i < 3 ;++i )
{
if (isHit[i])
{
shapes[i]->Draw(Color::Red,255);
}
else
{
shapes[i]->Draw(Color::White, 255);
}
}
if (Input::key.Return.on) break;//Enterで終了
}
System::End();
return true;
}

## 関数

static bool SDX::Shape::RectRect | ( | double | x1,
|  | double | y1,
|  | double | x2,
|  | double | y2,
|  | double | x3,
|  | double | y3,
|  | double | x4,
|  | double | y4
| ) |  |
| static protected

矩形の交差判定.

static bool SDX::Shape::LineLine | ( | double | x1,
|  | double | y1,
|  | double | x2,
|  | double | y2,
|  | double | x3,
|  | double | y3,
|  | double | x4,
|  | double | y4
| ) |  |
| static protected

線分の交差判定.

static int SDX::Shape::PointPoint | ( | double | x1,
|  | double | y1,
|  | double | x2,
|  | double | y2
| ) |  |
| static protected

二点間の距離を計算.

virtual bool SDX::Shape::Hit | ( | const Shape * | shape | ) | const
| pure virtual

衝突判定.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual void SDX::Shape::SetPos | ( | double | X座標,
|  | double | Y座標
| ) |  |
| pure virtual

指定座標に移動.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual Shape* SDX::Shape::Clone | ( | double | x,
|  | double | y
| ) |  | const
| pure virtual

同じ形の図形を作る.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

void SDX::Shape::SetZoom | ( | double | X拡大率,
|  | double | Y拡大率
| ) |  |

拡大率を設定.

void SDX::Shape::MultiZoom | ( | double | 倍率 | ) |

拡大率を掛け算する.

virtual void SDX::Shape::MultiZoom | ( | double | X倍率,
|  | double | Y倍率
| ) |  |
| pure virtual

縦横別で拡大率を掛け算する.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual void SDX::Shape::Move | ( | double | X移動量,
|  | double | Y移動量
| ) |  |
| pure virtual

相対座標で移動.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

void SDX::Shape::MoveA | ( | double | 距離,
|  | double | 方向
| ) |  |

極座標で移動.

virtual void SDX::Shape::Draw | ( | Color | 描画色,
|  | int | 透過率,
|  | Camera * | 座標変換Camera = `0`
| ) |  | const
| pure virtual

描画する.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual void SDX::Shape::Rotate | ( | double | 回転する角度 | ) |
| pure virtual

回転する.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual void SDX::Shape::SetAngle | ( | double | 指定角度 | ) |
| pure virtual

角度を指定する.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

double SDX::Shape::GetDirect | ( | Shape * | 比較対象 | ) |

対象との角度を取得.

double SDX::Shape::GetDistance | ( | Shape * | 比較対象 | ) |

対象との相対座標を取得.

virtual double SDX::Shape::GetX | ( |  | ) | const
| pure virtual

X座標を取得.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual double SDX::Shape::GetY | ( |  | ) | const
| pure virtual

Y座標を取得.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual double SDX::Shape::GetW | ( |  | ) | const
| pure virtual

幅を取得.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。

virtual double SDX::Shape::GetH | ( |  | ) | const
| pure virtual

高さを取得.

SDX::Circle, SDX::Rect, SDX::Line, SDX::Point, と SDX::Complexで実装されています。