|
|
/**
|
|
|
*
|
|
|
* @file FITKAbsGeomTools.h
|
|
|
* @brief 抽象查询类声明
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*
|
|
|
*/
|
|
|
#ifndef _FITK_ABSTRACT_GEOM_TOOLS_H___
|
|
|
#define _FITK_ABSTRACT_GEOM_TOOLS_H___
|
|
|
|
|
|
#include "FITK_Kernel/FITKCore/FITKAbstractObject.hpp"
|
|
|
#include "FITKInterfaceGeometryAPI.h"
|
|
|
|
|
|
namespace Interface
|
|
|
{
|
|
|
class FITKAbsVirtualTopo;
|
|
|
|
|
|
/**
|
|
|
* @brief 点查询类
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*/
|
|
|
class FITKInterfaceGeometryAPI FITKAbstractGeomPointTool :
|
|
|
public Core::FITKAbstractObject
|
|
|
{
|
|
|
public:
|
|
|
/**
|
|
|
* @brief Construct a new FITKAbstractGeomPointTool object
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*/
|
|
|
explicit FITKAbstractGeomPointTool() = default;
|
|
|
/**
|
|
|
* @brief Destroy the FITKAbstractGeomPointTool object
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*/
|
|
|
virtual ~FITKAbstractGeomPointTool() = default;
|
|
|
/**
|
|
|
* @brief 创建点查询类
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
* @return FITKAbstractGeomPointTool*
|
|
|
*/
|
|
|
static FITKAbstractGeomPointTool* createTool();
|
|
|
/**
|
|
|
* @brief 获取点坐标
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
* @param id 虚拓扑的id
|
|
|
* @param xyz 点的坐标
|
|
|
* @return true 成功
|
|
|
* @return false 失败
|
|
|
*/
|
|
|
virtual bool getXYZ(const int & id, double* xyz) = 0;
|
|
|
/**
|
|
|
* @brief 获取点坐标
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
* @param vtp 虚拓扑对象
|
|
|
* @param xyz 点的坐标
|
|
|
* @return true 成功
|
|
|
* @return false 失败
|
|
|
*/
|
|
|
virtual bool getXYZ(FITKAbsVirtualTopo* vtp, double* xyz) = 0;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @brief 平面信息查询工具。
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
* @date 2024-09-05
|
|
|
*/
|
|
|
class FITKInterfaceGeometryAPI FITKAbstractGeomPlaneFaceTool :
|
|
|
public Core::FITKAbstractObject
|
|
|
{
|
|
|
public:
|
|
|
/**
|
|
|
* @brief 构造函数。
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
* @date 2024-09-05
|
|
|
*/
|
|
|
explicit FITKAbstractGeomPlaneFaceTool() = default;
|
|
|
|
|
|
/**
|
|
|
* @brief 析构函数。
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
* @date 2024-09-05
|
|
|
*/
|
|
|
virtual ~FITKAbstractGeomPlaneFaceTool() = default;
|
|
|
|
|
|
/**
|
|
|
* @brief 创建(实例化)工具方法。[静态]
|
|
|
* @return 查询工具实例
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
* @date 2024-09-05
|
|
|
*/
|
|
|
static FITKAbstractGeomPlaneFaceTool* createTool();
|
|
|
|
|
|
/**
|
|
|
* @brief 获取查询信息。[纯虚函数]
|
|
|
* @param id:面虚拓扑ID(必须为平面)[引用]
|
|
|
* @param pos:面中心点坐标
|
|
|
* @param normal:面法向
|
|
|
* @param up:面向上方向
|
|
|
* @return 是否为有效平面
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
* @date 2024-09-05
|
|
|
*/
|
|
|
virtual bool getPlane(const int & id, double* pos, double* normal, double* up) = 0;
|
|
|
|
|
|
/**
|
|
|
* @brief 获取查询信息。[纯虚函数]
|
|
|
* @param vtp:面虚拓扑(必须为平面)
|
|
|
* @param pos:面中心点坐标
|
|
|
* @param normal:面法向
|
|
|
* @param up:面向上方向
|
|
|
* @return 是否为有效平面
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
* @date 2024-09-05
|
|
|
*/
|
|
|
virtual bool getPlane(FITKAbsVirtualTopo* vtp, double* pos, double* normal, double* up) = 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
/**
|
|
|
* @brief 抽象查询类生成器
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*/
|
|
|
class FITKInterfaceGeometryAPI FITKAbstractGeomToolsCreator
|
|
|
{
|
|
|
public:
|
|
|
/**
|
|
|
* @brief Construct a new FITKAbstractGeomToolsCreator object
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*/
|
|
|
explicit FITKAbstractGeomToolsCreator() = default;
|
|
|
/**
|
|
|
* @brief Destroy the FITKAbstractGeomToolsCreator object
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*/
|
|
|
virtual ~FITKAbstractGeomToolsCreator() = 0;
|
|
|
/**
|
|
|
* @brief 创建点查询类
|
|
|
* @return FITKAbstractGeomPointTool*
|
|
|
* @author LiBaojun (libaojunqd@foxmail.com)
|
|
|
* @date 2024-08-18
|
|
|
*/
|
|
|
virtual FITKAbstractGeomPointTool* createPointTool();
|
|
|
|
|
|
/**
|
|
|
* @brief 创建平面信息查询工具。[虚函数]
|
|
|
* @return 平面信息查询工具
|
|
|
* @author ChengHaotian (yeguangbaozi@foxmail.com)
|
|
|
* @date 2024-09-05
|
|
|
*/
|
|
|
virtual FITKAbstractGeomPlaneFaceTool* createPlaneFaceTool();
|
|
|
|
|
|
};
|
|
|
}
|
|
|
|
|
|
#endif
|