BIMHome v1.0.0
BIMHome接口文档说明
ArcofCircle2D.h
浏览该文件的文档.
1/************************************************************************
2* @file ArcofCircle2D.h
3*
4* @brief 二维圆弧
5*
6* @details 二维圆弧
7*
8* @author lirf
9*
10* @version 1.0
11*
12* @date 2025-6-7
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_GEOMETRY2DARC_H
19#define BIMHOMEBASE_GEOMETRY2DARC_H
20
21#include "Base/Math/Geometry/Curve2D.h"
22
23namespace Base
24{
25
26 //圆弧
27 class BaseExport ArcofCircle2D :public Curve2D
28 {
29 public:
30
32
41 ArcofCircle2D(Base::Vector2d center, double radius, double startangle, double endangle);//基础参数构造方法
42
50 ArcofCircle2D(Base::Vector2d pt1, Base::Vector2d pt2, Base::Vector2d pt3);//三点定弧的构造方法
51
52 virtual Geometry2D* copy(void) const;
53
59
66
71 double getRadius()const;
72
78 void setRadius(double pt);
79
84 double getStartAngle()const;
85
91 void setStartAngle(double angle);
92
98 void setEndAngle(double angle);
99
104 double getEndAngle() const;
105
110 bool getDirection()const;
111
117 void setDirection(bool bClockWire);
118
121 Base::Vector2d getMidPoint()const;//注意:返回的是圆弧中点,不是三点定弧中的第二个点
122
123 //对于非三点定弧的构造方法,需要计算起始点和终止点的坐标;
125
126 //对于三点定弧的构造方法,需要计算圆心半径等参数
128
129 bool isClockWise();//根据起始点和终止点计算是否为顺时针
130
131 bool isClosed();
132 double getLength()const;
133
134 public:
135 // 判断该角度是否在扫略范围内
136 bool isInArc(double angle);
137 // 计算圆弧极小值和极大值
138 std::pair<Base::Vector2d, Base::Vector2d> getExtrema();
139
140 private:
142 double mRadius;//半径
143 double mStartAngle;//起始角度 弧度制
144 double mEndAngle;//终止角度 弧度制
145 bool mClockWise;//true顺时针,false逆时针
146
147 Base::Vector2d mStartPoint;//起始点坐标
148 Base::Vector2d mSecondPoint;//三点定弧存储第二个点的坐标
149 Base::Vector2d mEndPoint;//终止点坐标
150 };
151}
152
153#endif
Base::Vector2d getEndPoint() const
void setStartAngle(double angle)
设置起始角度
ArcofCircle2D(Base::Vector2d pt1, Base::Vector2d pt2, Base::Vector2d pt3)
通过三点定弧构造圆弧
bool isInArc(double angle)
Base::Vector2d mStartPoint
Definition ArcofCircle2D.h:147
Base::Vector2d mSecondPoint
Definition ArcofCircle2D.h:148
Base::Vector2d mCenterPoint
Definition ArcofCircle2D.h:141
void calculateStartandEndPoint()
double mStartAngle
Definition ArcofCircle2D.h:143
Base::Vector2d getCenterPoint() const
获取中心点
std::pair< Base::Vector2d, Base::Vector2d > getExtrema()
bool getDirection() const
获取方向
void setEndAngle(double angle)
设置终止角度
Base::Vector2d getStartPoint() const
void setRadius(double pt)
设置半径
bool mClockWise
Definition ArcofCircle2D.h:145
double getRadius() const
获取半径
virtual Geometry2D * copy(void) const
void setCenterPoint(const Base::Vector2d &pt)
设置中心点
Base::Vector2d mEndPoint
Definition ArcofCircle2D.h:149
double mEndAngle
Definition ArcofCircle2D.h:144
double getEndAngle() const
获取终止角度
void calculateCircleCenter()
double getStartAngle() const
获取起始角度
void setDirection(bool bClockWire)
设置方向
double getLength() const
获取长度
Base::Vector2d getMidPoint() const
ArcofCircle2D(Base::Vector2d center, double radius, double startangle, double endangle)
构造二维圆弧
double mRadius
Definition ArcofCircle2D.h:142
Definition ArcofCircle2D.h:28
Definition Curve2D.h:28
Definition Geometry2D.h:72
Vector2d 类,表示二维空间中的向量
Definition Vector2D.h:58
Definition BaseFigureFactory.h:24