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.
AppFlow/FITK_Interface/FITKInterfaceGeometry/FITKAbsGeomTools.h

167 lines
5.1 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
*
* @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