SDXFrameWork  0.10
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Public Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
SDX::Line Class Reference

太さのある線を表す図形クラス. More...

#include <Line.h>

Inherits SDX::IShape.

Public Member Functions

 Line (double X中心座標, double Y中心座標, double 角度, double 長さ, double 太さ)
 コンストラクタ. More...
 
 Line (double X中心座標, double Y中心座標, double 角度, double 前方長さ, double 後方長さ, double 太さ)
 コンストラクタ. More...
 
virtual IShapeClone (double X座標, double Y座標) const override
 同じ形の図形を作る. More...
 
double GetX () const override
 X座標を取得. More...
 
double GetY () const override
 Y座標を取得. More...
 
double GetW () const override
 幅を取得. More...
 
double GetH () const override
 高さを取得. More...
 
void SetPos (double X座標, double Y座標) override
 指定座標に移動. More...
 
void MultiZoom (double X倍率, double Y倍率) override
 縦横別で拡大率を掛け算する. More...
 
void Rotate (double 回転する角度) override
 回転する. More...
 
void Move (double X移動量, double Y移動量) override
 相対座標で移動. More...
 
void Draw (const Color &描画色) const override
 描画する. More...
 
double GetXA () const
 頂点AのX座標を取得. More...
 
double GetYA () const
 頂点AのY座標を取得. More...
 
double GetXB () const
 頂点BのX座標を取得. More...
 
double GetYB () const
 頂点BのY座標を取得. More...
 
double GetThick () const
 太さを取得. More...
 
void SetThick (double 太さ)
 太さを設定. More...
 
double GetAngle () const override
 角度を取得. More...
 
double GetLength () const
 長さを取得. More...
 
double GetThickHarf () const
 太さの半分を取得. More...
 
double GetThickPow () const
 太さの二乗を取得. More...
 
double GetMinX () const
 頂点AとBのX座標の小さい値を取得. More...
 
double GetMinY () const
 頂点AとBのY座標の小さい値を取得. More...
 
double GetMaxX () const
 頂点AとBのX座標の大きい値を取得. More...
 
double GetMaxY () const
 頂点AとBのY座標の大きい値を取得. More...
 
bool Hit (const IShape *shape) const override
 衝突判定. More...
 
bool Hit (const Complex *complex) const override
 衝突判定. More...
 
bool Hit (const Point *point) const override
 衝突判定. More...
 
bool Hit (const Line *line) const override
 衝突判定. More...
 
bool Hit (const Rect *rect) const override
 衝突判定. More...
 
bool Hit (const Circle *circle) const override
 衝突判定. More...
 
bool LinePoint (double px, double py, double range) const
 線と点の当たり判定. More...
 
void MultiZoom (double 倍率)
 拡大率を掛け算する. More...
 
void SetZoom (double X拡大率, double Y拡大率)
 拡大率を設定. More...
 
virtual void SetZoom (double X拡大率, double Y拡大率)
 拡大率を設定. More...
 
void MoveA (double 距離, double 方向)
 極座標で移動. More...
 
void MoveA (double 距離, double 方向)
 極座標で移動. More...
 
void MoveF (double 距離)
 前方に移動. More...
 
void SetAngle (double 指定角度)
 角度を指定する. More...
 
virtual void SetAngle (double 指定角度)
 角度を指定する. More...
 
double GetDirect (IPosition *比較対象) const
 対象との角度を取得. More...
 
double GetDirect (IPosition *比較対象) const
 対象との角度を取得. More...
 
double GetDistance (IPosition *比較対象) const
 対象との相対座標を取得. More...
 
double GetDistance (IPosition *比較対象) const
 対象との相対座標を取得. More...
 
double CompareAngle (double 角度)
 角度の差を計算する
 

Static Protected Member Functions

static bool RectRect (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
 矩形の交差判定. More...
 
static bool LineLine (double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
 線分の交差判定. More...
 
static int PointPoint (double x1, double y1, double x2, double y2)
 二点間の距離を計算. More...
 

Protected Attributes

double zoomX = 1
 図形の拡大率
 
double zoomY = 1
 図形の拡大率
 

Detailed Description

太さのある線を表す図形クラス.

//Copyright © 2014 SDXFramework
//[License]GNU Affero General Public License, version 3
//[Contact]http://sourceforge.jp/projects/dxframework/
//図形の当たり判定をする
#include <SDXFramework.h>
bool SampleShape()
{
using namespace SDX;
System::Initialise("sample", 640, 480);
//図形を宣言する
Circle circle(10, 10, 100);
Rect rect(60, 60, 100, 100);
Line line(200, 100, PAI / 4, 600, 5);
//共通のインターフェースを持っている
IShape* shapes[3];
shapes[0] = &circle;
shapes[1] = &rect;
shapes[2] = &line;
while (System::Update())
{
//Lineは回転可能
line.Rotate(0.01);
//ダブルディスパッチによる当たり判定
for (int a = 0; a < 3; ++a)
{
int hit = 0;
for (int b = 0; b < 3; ++b)
{
if (a == b){ continue; }
hit += shapes[a]->Hit(shapes[b]);
}
if ( hit == 0)
{
shapes[a]->Draw(Color::White);
}
else if (hit == 1)
{
shapes[a]->Draw(Color::Red);
}
else
{
shapes[a]->Draw(Color::Blue);
}
}
if (Input::key.Return.on){ break;}//Enterで終了
}
return true;
}

Constructor & Destructor Documentation

SDX::Line::Line ( double  X中心座標,
double  Y中心座標,
double  角度,
double  長さ,
double  太さ 
)

コンストラクタ.

SDX::Line::Line ( double  X中心座標,
double  Y中心座標,
double  角度,
double  前方長さ,
double  後方長さ,
double  太さ 
)

コンストラクタ.

Member Function Documentation

virtual IShape* SDX::Line::Clone ( double  x,
double  y 
) const
overridevirtual

同じ形の図形を作る.

Implements SDX::IShape.

double SDX::Line::GetX ( ) const
overridevirtual

X座標を取得.

Implements SDX::IPosition.

double SDX::Line::GetY ( ) const
overridevirtual

Y座標を取得.

Implements SDX::IPosition.

double SDX::Line::GetW ( ) const
overridevirtual

幅を取得.

Implements SDX::IPosition.

double SDX::Line::GetH ( ) const
overridevirtual

高さを取得.

Implements SDX::IPosition.

void SDX::Line::SetPos ( double  X座標,
double  Y座標 
)
overridevirtual

指定座標に移動.

Implements SDX::IPosition.

void SDX::Line::MultiZoom ( double  X倍率,
double  Y倍率 
)
overridevirtual

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

Implements SDX::IPosition.

void SDX::Line::Rotate ( double  回転する角度)
overridevirtual

回転する.

Implements SDX::IPosition.

void SDX::Line::Move ( double  X移動量,
double  Y移動量 
)
overridevirtual

相対座標で移動.

Implements SDX::IPosition.

void SDX::Line::Draw ( const Color 描画色) const
overridevirtual

描画する.

Implements SDX::IShape.

double SDX::Line::GetXA ( ) const

頂点AのX座標を取得.

double SDX::Line::GetYA ( ) const

頂点AのY座標を取得.

double SDX::Line::GetXB ( ) const

頂点BのX座標を取得.

double SDX::Line::GetYB ( ) const

頂点BのY座標を取得.

double SDX::Line::GetThick ( ) const

太さを取得.

void SDX::Line::SetThick ( double  太さ)

太さを設定.

double SDX::Line::GetAngle ( ) const
overridevirtual

角度を取得.

Reimplemented from SDX::IPosition.

double SDX::Line::GetLength ( ) const

長さを取得.

double SDX::Line::GetThickHarf ( ) const

太さの半分を取得.

double SDX::Line::GetThickPow ( ) const

太さの二乗を取得.

double SDX::Line::GetMinX ( ) const

頂点AとBのX座標の小さい値を取得.

double SDX::Line::GetMinY ( ) const

頂点AとBのY座標の小さい値を取得.

double SDX::Line::GetMaxX ( ) const

頂点AとBのX座標の大きい値を取得.

double SDX::Line::GetMaxY ( ) const

頂点AとBのY座標の大きい値を取得.

bool SDX::Line::Hit ( const IShape iShape) const
overridevirtual

衝突判定.

Implements SDX::IShape.

bool SDX::Line::Hit ( const Complex complex) const
overridevirtual

衝突判定.

Implements SDX::IShape.

bool SDX::Line::Hit ( const Point point) const
overridevirtual

衝突判定.

Implements SDX::IShape.

bool SDX::Line::Hit ( const Line line) const
overridevirtual

衝突判定.

Implements SDX::IShape.

bool SDX::Line::Hit ( const Rect rect) const
overridevirtual

衝突判定.

Implements SDX::IShape.

bool SDX::Line::Hit ( const Circle circle) const
overridevirtual

衝突判定.

Implements SDX::IShape.

bool SDX::Line::LinePoint ( double  px,
double  py,
double  range 
) const

線と点の当たり判定.

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

矩形の交差判定.

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

線分の交差判定.

static int SDX::IShape::PointPoint ( double  x1,
double  y1,
double  x2,
double  y2 
)
staticprotectedinherited

二点間の距離を計算.

void SDX::IPosition::MultiZoom ( double  倍率)
inherited

拡大率を掛け算する.

void SDX::IPosition::SetZoom ( double  X拡大率,
double  Y拡大率 
)
inherited

拡大率を設定.

virtual void SDX::IPosition::SetZoom ( double  X拡大率,
double  Y拡大率 
)
virtualinherited

拡大率を設定.

void SDX::IPosition::MoveA ( double  距離,
double  方向 
)
inherited

極座標で移動.

void SDX::IPosition::MoveA ( double  距離,
double  方向 
)
inherited

極座標で移動.

void SDX::IPosition::MoveF ( double  距離)
inherited

前方に移動.

void SDX::IPosition::SetAngle ( double  指定角度)
inherited

角度を指定する.

virtual void SDX::IPosition::SetAngle ( double  指定角度)
virtualinherited

角度を指定する.

double SDX::IPosition::GetDirect ( IPosition 比較対象) const
inherited

対象との角度を取得.

double SDX::IPosition::GetDirect ( IPosition 比較対象) const
inherited

対象との角度を取得.

double SDX::IPosition::GetDistance ( IPosition 比較対象) const
inherited

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

double SDX::IPosition::GetDistance ( IPosition 比較対象) const
inherited

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