長方形
code: geometry.ts
/**
* 長方形クラス
* x軸, y軸に平行な長方形
*/
export class Rectangle {
/**
* 頂点座標リスト
*/
points: Array<Point>;
/**
* x,yが最も小さい座標(画面では左上, デカルト座標形では左下)を返します
*/
min: Point;
/**
* x,yが最も大きい座標(画面では右下, デカルト座標形では右上)を返します
*/
max: Point;
/**
* 指定した2点を頂点とするx軸, y軸に平行な長方形のコンストラクタ
* @param p1
* @param p2
*/
constructor(p1: Point, p2: Point) {
this.points = [];
this.points.push(new Point(p1.x, p1.y));
this.points.push(new Point(p2.x, p1.y));
this.points.push(new Point(p2.x, p2.y));
this.points.push(new Point(p1.x, p2.y));
this.min = new Point(Math.min(p1.x, p2.x), Math.min(p1.y, p2.y));
this.max = new Point(Math.max(p1.x, p2.x), Math.max(p1.y, p2.y));
}
/**
* ある点が長方形に含まれるかを判定します
* @param p
*/
contain(p: Point) {
return p.x.in(this.min.x, this.max.x) && p.y.in(this.min.y, this.max.y);
}
}