SDXFrameWork  0.04
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 ShapeClone (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 rgb, int transRate, Camera *camera=0) const =0
 描画する. [詳細]
 
virtual void Rotate (double angle)=0
 回転する. [詳細]
 
virtual void SetAngle (double angle)=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(10, 10, 100, 100);
Line line(200, 100, PAI / 4, 600, 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で終了
}
return true;
}

関数

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

矩形の交差判定.

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

線分の交差判定.

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

二点間の距離を計算.

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  rgb,
int  transRate,
Camera camera = 0 
) const
pure virtual

描画する.

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

virtual void SDX::Shape::Rotate ( double  angle)
pure virtual

回転する.

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

virtual void SDX::Shape::SetAngle ( double  angle)
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で実装されています。