5 #include <Framework/IPosition.h>
25 static bool RectRect(
double x1,
double y1,
double x2,
double y2,
double x3,
double y3,
double x4,
double y4)
30 if ((x1 < x3 && x1 < x4) || (x2 > x3 && x2 > x4))
37 if ((x2 < x3 && x2 < x4) || (x1 > x3 && x1 > x4))
45 if ((y1 < y3 && y1 < y4) || (y2 > y3 && y2 > y4))
52 if ((y2 < y3 && y2 < y4) || (y1 > y3 && y1 > y4))
62 static bool LineLine(
double x1,
double y1,
double x2,
double y2,
double x3,
double y3,
double x4,
double y4)
65 if ((
double(x1 - x2) * (y3 - y1) + (y1 - y2) * (x1 - x3)) *
66 (
double(x1 - x2) * (y4 - y1) + (y1 - y2) * (x1 - x4)) > 0)
71 if ((
double(x3 - x4) * (y1 - y3) + (y3 - y4) * (x3 - x1)) *
72 (
double(x3 - x4) * (y2 - y3) + (y3 - y4) * (x3 - x2)) > 0)
80 static int PointPoint(
double x1,
double y1,
double x2,
double y2)
82 return int((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
87 virtual ~
IShape() =
default;
90 virtual IShape*
Clone(
double x,
double y)
const = 0;
93 virtual bool Hit(
const IShape *iShape)
const = 0;
95 virtual bool Hit(
const Complex *complex)
const = 0;
97 virtual bool Hit(
const Point *point)
const = 0;
99 virtual bool Hit(
const Line *line)
const = 0;
101 virtual bool Hit(
const Rect *rect)
const = 0;
103 virtual bool Hit(
const Circle *circle)
const = 0;
106 virtual void Draw(
const Color &描画色)
const = 0;
矩形を表す図形クラス.
Definition: Rect.h:22
太さのある線を表す図形クラス.
Definition: Line.h:20
virtual IShape * Clone(double x, double y) const =0
同じ形の図形を作る.
static int PointPoint(double x1, double y1, double x2, double y2)
二点間の距離を計算.
Definition: IShape.h:80
点を表す図形クラス.
Definition: Point.h:22
衝突判定可能な図形の抽象クラス.
Definition: IShape.h:21
virtual bool Hit(const IShape *iShape) const =0
衝突判定.
複合図形を表すクラス.
Definition: Complex.h:20
色を表すクラス.
Definition: Color.h:11
static bool LineLine(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
線分の交差判定.
Definition: IShape.h:62
位置と方向を持つクラスのインターフェース.
Definition: IPosition.h:11
static bool RectRect(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
矩形の交差判定.
Definition: IShape.h:25
円を表す図形クラス.
Definition: Circle.h:20
virtual void Draw(const Color &描画色) const =0
描画する.