18#ifndef BIMHOMEBASE_BOUNDBOX2D_H
19#define BIMHOMEBASE_BOUNDBOX2D_H
26#include "Base/Vector2D.h"
28# define F_PI 3.1415926f
32# define D_PI 3.141592653589793
36# define FLOAT_MAX 3.402823466E+38F
40# define FLOAT_MIN 1.175494351E-38F
44# define DOUBLE_MAX 1.7976931348623157E+308
48# define DOUBLE_MIN 2.2250738585072014E-308
86 inline BoundBox2d(
double fX1,
double fY1,
double fX2,
double fY2);
93 inline bool IsValid();
102 inline bool IsEqual(
const BoundBox2d& rclBB,
double tolerance)
const;
118 inline bool operator== (
const BoundBox2d& rclBB)
const;
125 inline double Width()
const;
132 inline double Height()
const;
149 inline bool Contains(
const Vector2d& v,
double tolerance)
const;
162 inline void SetVoid();
217 MinX = std::min<double>(fX1, fX2);
218 MaxX = std::max<double>(fX1, fX2);
219 MinY = std::min<double>(fY1, fY2);
220 MaxY = std::max<double>(fY1, fY2);
269 return v.
x >=
MinX - tolerance && v.
x <=
MaxX + tolerance
270 && v.
y >=
MinY - tolerance && v.
y <=
MaxY + tolerance;
#define DOUBLE_MAX
Definition BoundBox2D.h:44
double MaxY
最大Y坐标
Definition BoundBox2D.h:199
double Height() const
获取包围盒的高度
Definition BoundBox2D.h:256
Vector2d GetCenter() const
获取包围盒的中心点
Definition BoundBox2D.h:273
BoundBox2d()
默认构造函数
Definition BoundBox2D.h:201
double MaxX
最大X坐标
Definition BoundBox2D.h:198
bool Intersect(const BoundBox2d &rclBB) const
检测另一个包围盒是否与当前包围盒相交
bool Intersect(const LineSegment2D &rclLine) const
检测线段是否与包围盒相交
bool IsValid()
检测包围盒是否有效
Definition BoundBox2D.h:223
double MinX
最小X坐标
Definition BoundBox2D.h:196
double MinY
最小Y坐标
Definition BoundBox2D.h:197
bool IsEqual(const BoundBox2d &rclBB, double tolerance) const
检测两个包围盒是否在指定容差范围内相等
Definition BoundBox2D.h:228
bool Contains(const Base::Vector2d &v) const
检测点是否在包围盒内
Definition BoundBox2D.h:261
void Add(const Vector2d &v)
将点添加到包围盒
Definition BoundBox2D.h:284
bool operator==(const BoundBox2d &rclBB) const
重载 == 操作符
Definition BoundBox2D.h:243
double Width() const
获取包围盒的宽度
Definition BoundBox2D.h:251
void SetVoid()
设置包围盒为空
Definition BoundBox2D.h:278
BoundBox2d & operator=(const BoundBox2d &rclBB)
重载 = 操作符
Definition BoundBox2D.h:234
bool Intersect(const Polygon2d &rclPoly) const
检测多边形是否与包围盒相交
二维轴对齐包围盒(AABB)实现
Definition BoundBox2D.h:63
Definition LineSegment2D.h:28
bool IsEqual(const Vector2d &v, double tolerance=0.0) const
比较两个向量是否相等
Definition Vector2D.h:567
double y
x 和 y 坐标
Definition Vector2D.h:384
double x
Definition Vector2D.h:384
Vector2d 类,表示二维空间中的向量
Definition Vector2D.h:58
Definition BaseFigureFactory.h:24