opencascade AIS_Triangulation源码学习 每个三角形顶点关联颜色

opencascade AIS_Triangulation 每个三角形顶点关联颜色

前言

交互对象,从 Poly_Triangulation 绘制数据,可选择性地带有与每个三角形顶点关联的颜色。

为了最大效率,颜色以32位整数表示,而不是传统的 Quantity_Color 值。

目前尚未实现三角形和顶点的交互选择功能。

方法

1

构造三角化显示对象

Standard_EXPORT AIS_Triangulation(const Handle(Poly_Triangulation)& aTriangulation);

2

//! 设置每个节点的颜色。

//! 每个32位颜色值为 Alpha << 24 + Blue << 16 + Green << 8 + Red

//! 颜色组件的顺序对OpenGL的后续使用至关重要。

Standard_EXPORT void SetColors (const Handle(TColStd_HArray1OfInteger)& aColor);

3

//! 获取每个节点的颜色。

//! 每个32位颜色值为 Alpha << 24 + Blue << 16 + Green << 8 + Red

Standard_EXPORT Handle(TColStd_HArray1OfInteger) GetColors() const;

4

//! 如果三角化具有顶点颜色,则返回 true。

Standard_Boolean HasVertexColors() const;

5

void SetTriangulation (const Handle(Poly_Triangulation)& aTriangulation);

7

//! 返回 Poly_Triangulation。

Standard_EXPORT Handle(Poly_Triangulation) GetTriangulation() const;

8

//! 设置重建复合形状中透明度的值 aValue。

Standard_EXPORT virtual void SetTransparency (const Standard_Real aValue = 0.6) Standard_OVERRIDE;

9

//! 移除重建复合形状中的透明度设置。

Standard_EXPORT virtual void UnsetTransparency() Standard_OVERRIDE;

用法示例

OpenCascade中的AIS_Triangulation类用于显示Poly_Triangulation对象,以下是一个简单的用法示例:

cpp 复制代码
#include <AIS_Triangulation.hxx>
#include <Poly_Triangulation.hxx>
#include <TopoDS_Shape.hxx>
#include <BRep_Builder.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <AIS_InteractiveContext.hxx>
#include <Quantity_Color.hxx>

void createTriangulation(const Handle(AIS_InteractiveContext)& context) {
    // 创建一个简单的三角化对象作为示例
    Poly_Triangulation triangulation;
    
    // 在这里设置三角化数据,例如顶点、三角形索引和颜色
    // ...

    // 创建AIS_Triangulation对象
    Handle(AIS_Triangulation) aisTriangulation = new AIS_Triangulation(new Poly_Triangulation(triangulation));

    // 设置每个节点的颜色(示例中使用白色)
    Quantity_Color color(Quantity_NOC_WHITE);
    int numNodes = triangulation.NbNodes();
    Handle(TColStd_HArray1OfInteger) colors = new TColStd_HArray1OfInteger(1, numNodes);
    for (int i = 1; i <= numNodes; ++i) {
        colors->SetValue(i, color.RGB());
    }
    aisTriangulation->SetColors(colors);

    // 将AIS_Triangulation对象添加到交互上下文中显示
    context->Display(aisTriangulation, Standard_True);
}

int main() {
    // 创建OpenCascade交互上下文
    Handle(AIS_InteractiveContext) context = new AIS_InteractiveContext();

    // 创建并显示三角化对象
    createTriangulation(context);

    // 进入主事件循环或其他逻辑...

    return 0;
}

在上述示例中,我们首先创建了一个Poly_Triangulation对象(实际中需要设置三角化的顶点和三角形索引等数据),然后将其作为参数创建了AIS_Triangulation对象。接着,我们为每个节点设置了颜色,并将AIS_Triangulation对象添加到交互上下文中显示。这个示例展示了如何使用AIS_Triangulation类在OpenCascade中创建和显示三角化对象。

参考

AIS_Trihedron 支持的选择模式。
cpp 复制代码
enum AIS_TrihedronSelectionMode
{
  AIS_TrihedronSelectionMode_EntireObject = 0, //!< 选择整个三面体
  AIS_TrihedronSelectionMode_Origin       = 1, //!< 原点
  AIS_TrihedronSelectionMode_Axes         = 2, //!< 坐标轴
  AIS_TrihedronSelectionMode_MainPlanes   = 3  //!< 主平面
};
AIS_TypeOfPlane 声明平面的类型。
cpp 复制代码
enum AIS_TypeOfPlane
{
  AIS_TOPL_Unknown, //!< 未知类型
  AIS_TOPL_XYPlane, //!< XY平面
  AIS_TOPL_XZPlane, //!< XZ平面
  AIS_TOPL_YZPlane  //!< YZ平面
};
AIS_TypeOfIso 声明显示的等参数线类型。
cpp 复制代码
enum AIS_TypeOfIso
{
  AIS_TOI_IsoU,   //!< U等参数线
  AIS_TOI_IsoV,   //!< V等参数线
  AIS_TOI_Both    //!< 同时显示U和V等参数线
};
AIS_TypeOfAxis声明轴的类型。
cpp 复制代码
enum AIS_TypeOfAxis
{
  AIS_TOAX_Unknown, //!< 未知类型
  AIS_TOAX_XAxis,   //!< X轴
  AIS_TOAX_YAxis,   //!< Y轴
  AIS_TOAX_ZAxis    //!< Z轴
};
AIS_TypeOfAttribute

enum AIS_TypeOfAttribute

{

AIS_TOA_Line,

AIS_TOA_Dimension,

AIS_TOA_Wire,

AIS_TOA_Plane,

AIS_TOA_Vector,

AIS_TOA_UIso,

AIS_TOA_VIso,

AIS_TOA_Free,

AIS_TOA_UnFree,

AIS_TOA_Section,

AIS_TOA_Hidden,

AIS_TOA_Seen,

AIS_TOA_FaceBoundary,

AIS_TOA_FirstAxis,

AIS_TOA_SecondAxis,

AIS_TOA_ThirdAxis

};
参考

相关推荐
潮汐退涨月冷风霜1 小时前
机器学习之非监督学习(四)K-means 聚类算法
学习·算法·机器学习
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
羊小猪~~1 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
Charles Ray2 小时前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
我要吐泡泡了哦3 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1233 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
贾saisai5 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫5 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
铁匠匠匠7 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
架构文摘JGWZ8 小时前
Java 23 的12 个新特性!!
java·开发语言·学习