You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
6.7 KiB
C++
198 lines
6.7 KiB
C++
/**
|
|
* @file FITKAbsGeoModelPoint.h
|
|
* @brief 抽象点.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
#ifndef FITKABSGEOMODELPOINT_H
|
|
#define FITKABSGEOMODELPOINT_H
|
|
|
|
#include "FITKInterfaceGeometryAPI.h"
|
|
#include "FITK_Interface/FITKInterfaceGeometry/FITKAbsGeoCommand.h"
|
|
#include <QVector>
|
|
#include <array>
|
|
|
|
namespace Interface
|
|
{
|
|
/**
|
|
* @brief 坐标点.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelPoint :
|
|
public FITKAbsGeoCommand
|
|
{
|
|
public:
|
|
FITKAbsGeoModelPoint() = default;
|
|
FITKAbsGeoModelPoint(double x, double y, double z);
|
|
virtual ~FITKAbsGeoModelPoint() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
|
|
double x() const;
|
|
void setX(double x);
|
|
double y() const;
|
|
void setY(double y);
|
|
double z() const;
|
|
void setZ(double z);
|
|
void setCoord(double x, double y, double z);
|
|
|
|
protected:
|
|
double m_X{ 0.0 };
|
|
double m_Y{ 0.0 };
|
|
double m_Z{ 0.0 };
|
|
};
|
|
/**
|
|
* @brief 曲线的端点.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelCurveEnd :
|
|
public FITKAbsGeoModelPoint
|
|
{
|
|
public:
|
|
FITKAbsGeoModelCurveEnd() = default;
|
|
virtual ~FITKAbsGeoModelCurveEnd() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
VirtualShape sourceCurve() const;
|
|
void setSourceCurve(VirtualShape curve);
|
|
bool useStartEnd() const;
|
|
void setUseStartEnd(bool use);
|
|
protected:
|
|
VirtualShape m_SourceCurve{};
|
|
bool m_UseStartEnd{ true };
|
|
};
|
|
/**
|
|
* @brief 距离曲线的端点指定距离.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelCurveEndDistance :
|
|
public FITKAbsGeoModelPoint
|
|
{
|
|
public:
|
|
FITKAbsGeoModelCurveEndDistance() = default;
|
|
virtual ~FITKAbsGeoModelCurveEndDistance() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
VirtualShape sourceCurve() const;
|
|
void setSourceCurve(VirtualShape curve);
|
|
bool useStartEnd() const;
|
|
void setUseStartEnd(bool use);
|
|
double distance() const;
|
|
void setDistance(double distance);
|
|
protected:
|
|
VirtualShape m_SourceCurve{};
|
|
bool m_UseStartEnd{ true };
|
|
double m_Distance{};
|
|
};
|
|
/**
|
|
* @brief 指定曲线比例创建点.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelCurveRadio :
|
|
public FITKAbsGeoModelPoint
|
|
{
|
|
public:
|
|
FITKAbsGeoModelCurveRadio() = default;
|
|
virtual ~FITKAbsGeoModelCurveRadio() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
VirtualShape sourceCurve() const;
|
|
void setSourceCurve(VirtualShape curve);
|
|
double radio() const;
|
|
void setRadio(double radio);
|
|
protected:
|
|
VirtualShape m_SourceCurve{};
|
|
double m_Radio{};
|
|
};
|
|
/**
|
|
* @brief 点在线上的投影.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelPointProjectionOnCurve :
|
|
public FITKAbsGeoModelPoint
|
|
{
|
|
public:
|
|
FITKAbsGeoModelPointProjectionOnCurve() = default;
|
|
virtual ~FITKAbsGeoModelPointProjectionOnCurve() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
VirtualShape sourcePoint() const;
|
|
void setSourcePoint(VirtualShape point);
|
|
VirtualShape sourceCurve() const;
|
|
void setSourceCurve(VirtualShape curve);
|
|
QVector<std::array<double, 3>> getResultPoints() { return m_Projections; };
|
|
protected:
|
|
VirtualShape m_SourcePoint{};
|
|
VirtualShape m_SourceCurve{};
|
|
QVector<std::array<double, 3>> m_Projections{};
|
|
};
|
|
/**
|
|
* @brief 两条线的交点.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelTwoCurveIntersection :
|
|
public FITKAbsGeoModelPoint
|
|
{
|
|
public:
|
|
FITKAbsGeoModelTwoCurveIntersection() = default;
|
|
virtual ~FITKAbsGeoModelTwoCurveIntersection() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
VirtualShape sourceCurve1() const;
|
|
VirtualShape sourceCurve2() const;
|
|
void setSourceCurve(VirtualShape curve1, VirtualShape curve2);
|
|
QVector<std::array<double, 3>> getResultPoints() { return m_Intersections; };
|
|
protected:
|
|
VirtualShape m_SourceCurve1{};
|
|
VirtualShape m_SourceCurve2{};
|
|
QVector<std::array<double, 3>> m_Intersections{};
|
|
};
|
|
|
|
/**
|
|
* @brief 点在面上的投影.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelPointProjectionOnSurface :
|
|
public FITKAbsGeoModelPoint
|
|
{
|
|
public:
|
|
FITKAbsGeoModelPointProjectionOnSurface() = default;
|
|
virtual ~FITKAbsGeoModelPointProjectionOnSurface() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
VirtualShape sourcePoint() const;
|
|
void setSourcePoint(VirtualShape point);
|
|
VirtualShape sourceSurface() const;
|
|
void setSourceSurface(VirtualShape surface);
|
|
QVector<std::array<double, 3>> getResultPoints() { return m_Projections; };
|
|
protected:
|
|
VirtualShape m_SourcePoint{};
|
|
VirtualShape m_SourceSurface{};
|
|
QVector<std::array<double, 3>> m_Projections{};
|
|
};
|
|
/**
|
|
* @brief 线和面的交点.
|
|
* @author YanZhiHui (chanyuantiandao@126.com)
|
|
* @date 2024-08-27
|
|
*/
|
|
class FITKInterfaceGeometryAPI FITKAbsGeoModelCurveIntersectionSurface :
|
|
public FITKAbsGeoModelPoint
|
|
{
|
|
public:
|
|
FITKAbsGeoModelCurveIntersectionSurface() = default;
|
|
virtual ~FITKAbsGeoModelCurveIntersectionSurface() = default;
|
|
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
|
|
VirtualShape sourceCurve() const;
|
|
void setSourceCurve(VirtualShape curve);
|
|
VirtualShape sourceSurface() const;
|
|
void setSourceSurface(VirtualShape surface);
|
|
QVector<std::array<double, 3>> getResultPoints() { return m_Intersections; };
|
|
protected:
|
|
VirtualShape m_SourceCurve{};
|
|
VirtualShape m_SourceSurface{};
|
|
QVector<std::array<double, 3>> m_Intersections{};
|
|
};
|
|
}
|
|
|
|
#endif // !FITKABSGEOMODELPOINT_H
|