BIMHome v1.0.0
BIMHome接口文档说明
IExtremaCurveCurve.h
浏览该文件的文档.
1/************************************************************************
2* @file IExtremaCurveCurve.h
3*
4* @brief 线线极值接口类
5*
6* @details 线线极值接口类
7*
8* @author sunpeng
9*
10* @version 版本号 V0.1
11*
12* @date 2025-6-27
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef PLATFORMALGORITHM_INTERFACE_IEXTREMACURVECURVE_H
19#define PLATFORMALGORITHM_INTERFACE_IEXTREMACURVECURVE_H
20
21#include <BHGlobal.h>
22#include <string>
23#include <vector>
24#include <memory>
25#include "Base/Vector3D.h"
26
27
28namespace App {
29 class IDocument;
30 class IDocumentObject;
31}
32
33namespace Base {
34 class PolyLine;
35 class Curve;
36}
37
38namespace PlatformAlgorithm
39{
40 class PlatformAlgorithmEXPORTS IExtremaCurveCurve
41 {
42 public:
44
51 static std::shared_ptr<IExtremaCurveCurve> createExtremaCurveCurve(std::shared_ptr<Base::Curve> pCurve1, std::shared_ptr<Base::Curve> pCurve2);
52
60 static std::shared_ptr<IExtremaCurveCurve> createExtremaCurveCurve(App::IDocumentObject* pCurve1Obj, App::IDocumentObject* pCurve2Obj);
61
64
75 static std::shared_ptr<IExtremaCurveCurve> createExtremaCurveCurve(std::shared_ptr<Base::Curve> pCurve1, std::shared_ptr<Base::Curve> pCurve2, const double U1min, const double U1max, const double U2min, const double U2max);
76
88 static std::shared_ptr<IExtremaCurveCurve> createExtremaCurveCurve(App::IDocumentObject* pCurve1Obj, App::IDocumentObject* pCurve2Obj, const double U1min, const double U1max, const double U2min, const double U2max);
89
90 public:
91
97 virtual int nbExtrema() const = 0;
98
101
107 virtual void points(const int Index, Base::Vector3d& P1, Base::Vector3d& P2) const = 0;
108
113
120 virtual void parameters(const int Index, double& U1, double& U2) const = 0;
121
125
131 virtual double distance(const int Index) const = 0;
132
135
141 virtual void nearestPoints(Base::Vector3d& P1, Base::Vector3d& P2) const = 0;
142
145
151 virtual void lowerDistanceParameters(double& U1, double& U2) const = 0;
152
158 virtual double lowerDistance() const = 0;
159
162
170
173
180 virtual bool totalLowerDistanceParameters(double& U1, double& U2) = 0;
181
183
188 virtual double totalLowerDistance() = 0;
189
190
191 };
192}
193
194#endif //PLATFORMALGORITHM_INTERFACE_IEXTREMACURVECURVE_H
Definition IDocumentObject.h:35
static std::shared_ptr< IExtremaCurveCurve > createExtremaCurveCurve(std::shared_ptr< Base::Curve > pCurve1, std::shared_ptr< Base::Curve > pCurve2)
计算曲线 pCurve1 和 pCurve2 之间的极值。
virtual bool totalNearestPoints(Base::Vector3d &P1, Base::Vector3d &P2)=0
在 <P1> 和 <P2> 中设置解决方案点对, 使得 [P1,P2] 之间的距离最小,并考虑曲线的端点。
virtual double totalLowerDistance()=0
如果 <myExtCC> 未完成,
virtual void parameters(const int Index, double &U1, double &U2) const =0
返回第一条曲线上的点的参数 U1 和第二条曲线上的点的参数 U2, 这些点是此算法计算出的第 Index 个极值的端点。 异常: 如果 Index 不在 [1, NbExtrema] 范围内,其中 Nb...
virtual double lowerDistance() const =0
计算最短极值的端点之间的距离
virtual double distance(const int Index) const =0
计算此算法计算出的第 Index 个极值的端点之间的距离。 异常: 如果 Index 不在 [1, NbExtrema] 范围内,其中 NbExtrema 是此算法计算出的极值数量,
virtual void points(const int Index, Base::Vector3d &P1, Base::Vector3d &P2) const =0
异常: 如果 Index 不在 [1, NbExtrema] 范围内,其中 NbExtrema 是此算法计算出的极值数量,
virtual int nbExtrema() const =0
计算极值数量
virtual bool totalLowerDistanceParameters(double &U1, double &U2)=0
在 <U1> 和 <U2> 中设置解决方案点对的参数, 这些参数代表总的最近解决方案。
static std::shared_ptr< IExtremaCurveCurve > createExtremaCurveCurve(App::IDocumentObject *pCurve1Obj, App::IDocumentObject *pCurve2Obj, const double U1min, const double U1max, const double U2min, const double U2max)
创建曲线间极值距离计算工具(支持参数区间)
virtual void lowerDistanceParameters(double &U1, double &U2) const =0
返回第一条曲线上的点的参数 U1 和第二条曲线上的点的参数 U2, 这些点是此算法计算出的最短极值的端点。
virtual void nearestPoints(Base::Vector3d &P1, Base::Vector3d &P2) const =0
返回第一条曲线上的点 P1 和第二条曲线上的点 P2, 这些点是此算法计算出的最短极值的端点。
static std::shared_ptr< IExtremaCurveCurve > createExtremaCurveCurve(App::IDocumentObject *pCurve1Obj, App::IDocumentObject *pCurve2Obj)
创建曲线间极值距离计算工具
static std::shared_ptr< IExtremaCurveCurve > createExtremaCurveCurve(std::shared_ptr< Base::Curve > pCurve1, std::shared_ptr< Base::Curve > pCurve2, const double U1min, const double U1max, const double U2min, const double U2max)
注意: 使用函数 NbExtrema 来获取解的数量。如果此算法失败,NbExtrema 将返回 0。
Definition IExtremaCurveCurve.h:41
Definition BaseFigureFactory.h:28
Definition BaseFigureFactory.h:24
Definition BaseFigureFactory.h:33