18#ifndef BIMHOMEBASE_VECTOR2D_H
19#define BIMHOMEBASE_VECTOR2D_H
27# define F_PI 3.1415926f
31# define D_PI 3.141592653589793
35# define FLOAT_MAX 3.402823466E+38F
39# define FLOAT_MIN 1.175494351E-38F
43# define DOUBLE_MAX 1.7976931348623157E+308
47# define DOUBLE_MIN 2.2250738585072014E-308
105 inline bool operator== (
const Vector2d& v)
const;
112 inline Vector2d operator+ (
void)
const;
135 inline Vector2d operator- (
void)
const;
159 inline Vector2d operator* (
double c)
const;
167 inline Vector2d& operator*= (
double c);
175 inline double operator* (
const Vector2d& v)
const;
183 inline Vector2d operator/ (
double c)
const;
191 inline Vector2d& operator/= (
double c);
200 inline bool IsNull(
double tolerance = 0.0)
const;
207 inline double Length()
const;
214 inline double Angle()
const;
221 inline double Sqr()
const;
230 inline Vector2d& Set(
double x,
double y);
245 inline Vector2d& Scale(
double factor);
253 inline Vector2d& Rotate(
double angle);
268 inline Vector2d Perpendicular(
bool clockwise =
false)
const;
277 static inline Vector2d FromPolar(
double r,
double fi);
296 double x = v1.
x - v2.
x, y = v1.
y - v2.
y;
297 return static_cast<double>(sqrt((x * x) + (y * y)));
307 inline bool IsEqual(
const Vector2d& v,
double tolerance = 0.0)
const;
394 : x(double(x)), y(double(y))
417 return (
x == v.
x) && (
y == v.
y);
468 return x * v.
x +
y * v.
y;
490 return x *
x +
y *
y <= tolerance * tolerance;
495 return sqrt(
x *
x +
y *
y);
505 return x *
x +
y *
y;
532 x = cPt.
x * cos(angle) - cPt.
y * sin(angle);
533 y = cPt.
x * sin(angle) + cPt.
y * cos(angle);
556 return Vector2d(r * cos(fi), r * sin(fi));
561 double dx = (
x - v.
x);
562 double dy = (
y - v.
y);
564 return sqrt(dx * dx + dy * dy);
A
Definition ISnapProcessedBase.h:49
B
Definition ISnapProcessedBase.h:49
Vector2d & Set(double x, double y)
设置向量的坐标
Definition Vector2D.h:508
Vector2d operator+(void) const
加法运算符
Definition Vector2D.h:420
double Distance(const Vector2d &v) const
计算两个向量之间的距离
Definition Vector2D.h:559
Vector2d & Rotate(double angle)
旋转向量
Definition Vector2D.h:529
Vector2d & Negate()
取向量的相反数
Definition Vector2D.h:515
Vector2d moveAlongLine(const Vector2d &rclP0, const Vector2d &rclP1, double d) const
计算沿直线 P0P1 移动距离 d 的点
Vector2d & Normalize()
归一化向量
Definition Vector2D.h:537
double Sqr() const
计算向量的平方长度
Definition Vector2D.h:503
Vector2d & operator=(const Vector2d &v)
赋值运算符
Definition Vector2D.h:408
Vector2d alongLineNormalMoveDistancePt(const Vector2d &rclP0, const Vector2d &rclP1, double d) const
计算沿直线法线方向移动距离 d 的点
Vector2d Perpendicular(bool clockwise=false) const
计算向量的法向量
Definition Vector2D.h:549
Vector2d & Scale(double factor)
缩放向量
Definition Vector2D.h:522
bool IsLess(const Vector2d &v, double tolerance=0.0) const
比较两个向量是否小于
Vector2d perpendicularPointOnLine(const Vector2d &A, const Vector2d &B)
计算当前点到直线 AB 的垂足
bool IsEqual(const Vector2d &v, double tolerance=0.0) const
比较两个向量是否相等
Definition Vector2D.h:567
Vector2d & operator*=(double c)
乘法赋值运算符
Definition Vector2D.h:459
bool IsNull(double tolerance=0.0) const
检查向量是否为零向量
Definition Vector2D.h:488
Vector2d & operator/=(double c)
除法赋值运算符
Definition Vector2D.h:481
double Length() const
计算向量的长度
Definition Vector2D.h:493
Vector2d operator*(double c) const
乘法运算符
Definition Vector2D.h:454
void ProjectToLine(const Vector2d &point, const Vector2d &line)
将向量投影到一条直线上
Vector2d & operator-=(const Vector2d &v)
减法赋值运算符
Definition Vector2D.h:447
Vector2d operator/(double c) const
除法运算符
Definition Vector2D.h:476
double y
x 和 y 坐标
Definition Vector2D.h:384
Vector2d()
默认构造函数
Definition Vector2D.h:388
static Vector2d FromPolar(double r, double fi)
从极坐标创建向量
Definition Vector2D.h:554
Vector2d operator-(void) const
取反运算符
Definition Vector2D.h:437
bool operator==(const Vector2d &v) const
等于运算符
Definition Vector2D.h:415
Vector2d alongLineAngleMoveDistancePt(const Vector2d &rclP0, const Vector2d &rclP1, double angle, double d) const
计算与直线 P0P1 夹角为 angle 的线上一点,使得该点到直线 P0P1 的距离为 d
static double Distance(const Vector2d &v1, const Vector2d &v2)
计算两个向量之间的距离
Definition Vector2D.h:294
Vector2d & operator+=(const Vector2d &v)
加法赋值运算符
Definition Vector2D.h:430
Vector2d alongLineNormalDir(const Vector2d &rclP0, const Vector2d &rclP1) const
计算直线 P0P1 的法线方向
double Angle() const
计算向量与 x 轴的夹角
Definition Vector2D.h:498
double x
Definition Vector2D.h:384
double GetAngle(const Vector2d &v) const
计算两个向量之间的夹角
Vector2d 类,表示二维空间中的向量
Definition Vector2D.h:58
_Precision Distance(const Vector3< _Precision > &v1, const Vector3< _Precision > &v2)
计算三维空间中两个点之间的欧几里得距离
Definition Vector3D.h:851
DualNumber operator*(DualNumber a, DualNumber b)
将两个对偶数相乘
Definition DualNumber.h:188
Definition BaseFigureFactory.h:24