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

news2024/9/19 10:45:29

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对象,以下是一个简单的用法示例:

#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 支持的选择模式。

enum AIS_TrihedronSelectionMode
{
  AIS_TrihedronSelectionMode_EntireObject = 0, //!< 选择整个三面体
  AIS_TrihedronSelectionMode_Origin       = 1, //!< 原点
  AIS_TrihedronSelectionMode_Axes         = 2, //!< 坐标轴
  AIS_TrihedronSelectionMode_MainPlanes   = 3  //!< 主平面
};
AIS_TypeOfPlane 声明平面的类型。

enum AIS_TypeOfPlane
{
  AIS_TOPL_Unknown, //!< 未知类型
  AIS_TOPL_XYPlane, //!< XY平面
  AIS_TOPL_XZPlane, //!< XZ平面
  AIS_TOPL_YZPlane  //!< YZ平面
};
AIS_TypeOfIso 声明显示的等参数线类型。

enum AIS_TypeOfIso
{
  AIS_TOI_IsoU,   //!< U等参数线
  AIS_TOI_IsoV,   //!< V等参数线
  AIS_TOI_Both    //!< 同时显示U和V等参数线
};
AIS_TypeOfAxis声明轴的类型。

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
};
参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Swift中@escaping的理解与使用

当我们在一个方法中将一个闭包当做参数的时候&#xff0c;那么就有很大概率用到这个escaping关键字了&#xff0c;试想一般什么时候会将闭包当做参数传进来呢&#xff1f;很多时候比如方法里面有异步操作&#xff0c;需要方法先return&#xff0c;最后再调用闭包返回结果&#…

论数据驱动的优雅:构建轻量高效的数据中台-亿发

随着数据处理需求的不断增长&#xff0c;各类企业都在探索如何更高效地管理和利用数据。特别是在大规模数据应用的背景下&#xff0c;数据中台成为了众多企业优化数据管理的关键解决方案。从数据中台的建设需求到其实际应用&#xff0c;本文将详细解析数据中台的发展历程、建设…

.NET 一款反序列化打入冰蝎内存马的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

用Python编写你的网络监控系统详解

概要 在现代网络管理中,实时监控网络流量和状态是保证网络正常运行的关键。使用Python编写网络监控工具可以帮助管理员及时发现和解决网络问题。本文将详细介绍如何使用Python编写网络监控工具,包括基本概念、常用库及其应用场景,并提供相应的示例代码。 网络监控的基本概念…

nginx反向代理严重错误[crit] (13: Permission denied) while reading upstream问题

nginx作为使用最广泛的一款反向代理软件&#xff0c;其性能也是非常优秀的&#xff0c;一般情况下&#xff0c;直接配置就可以使用&#xff0c;而且也都是稳定高效的&#xff0c;但是在实际应用中&#xff0c;对于不同的应用场景&#xff0c;总是会出现各种各样的问题&#xff…

nanopc-t4线刷Android10编译源码

文章目录 windows线刷Linux编译一撸到底核心编译命令最终Image目录源码和刷机工具放一个目录下线刷走一波,不能有任何报错windows线刷 https://www.myteamcloud.top/?p=266 Linux编译一撸到底 https://blog.csdn.net/wb4916/article/details/134911430 核心编译命令 ./b…

全网首创!基于GaitSet的一种多人步态识别方法公示

有源代码V细聊&#xff0c;可商用/私用/毕设等&#xff1a;NzqDssm16 &#x1f349;1 绪论 经过相关研究确认&#xff0c;步态识别是足以达到应用级别的生物识别技术&#xff0c;在现代社会中自始至终都存在着广泛的应用前景。之所以迟迟没有普及&#xff0c;主要是实…

docker配置阿里镜像加速器

‌阿里云镜像加速的核心功能是通过提供官方的镜像站点&#xff0c;加速官方镜像的下载。使用容器时&#xff0c;由于网络原因&#xff0c;下载‌Docker官方镜像可能会需要很长时间&#xff0c;甚至下载失败。阿里云容器镜像服务‌ACR&#xff08;阿里云容器仓库&#xff09;为此…

智慧大楼信息化一体化管理整体建设设计方案(可编辑80页PPT)

随着信息技术的飞速发展&#xff0c;智慧大楼已成为现代城市建设的重要趋势。本项目旨在通过信息化一体化管理整体建设设计方案&#xff0c;将大楼内的各个系统进行有机整合&#xff0c;实现智能化、高效化的管理与服务。通过该方案&#xff0c;我们期望提升大楼的运营效率、安…

【网络基础】初识网络 {计算机网络背景;网络协议初识;网络传输基本流程;网络中的地址管理;网络设备简单介绍}

一、计算机网络背景 1.1 网络发展 计算机网络的发展可以追溯到20世纪60年代&#xff0c;那时候最初的计算机网络只是为了让科学家们能够共享计算机资源和数据。但是在20世纪80年代&#xff0c;互联网的出现彻底改变了计算机网络的面貌&#xff0c;使得人们可以随时随地通过互…

昇思25天学习打卡营第XX天|Vision Transformer图像分类

好了&#x1f44c;到我最熟悉的模型了&#xff0c;苦苦缠斗几个月呜呜呜 CLIP预训练数据集薄纱了&#xff0c;这个对齐的思路很好&#xff0c;但是对文本图像长度限制更高&#xff0c;作者很可惜

详细分析nohup后台运行命令

目录 1. 基本知识2. Demo 1. 基本知识 Unix/Linux 命令&#xff0c;用于在后台运行程序&#xff0c;并确保它在用户退出或注销后继续运行 nohup 的主要作用是使程序在终端会话结束后继续运行&#xff0c;这对需要长时间执行的任务特别有用 基本的用法如下&#xff1a; nohu…

计算机网络课程介绍

计算机网络课程的核心内容与应用&#xff0c;涵盖多个关键协议与技术的深入理解&#xff0c;旨在全面培养学生的网络设计、分析及实际操作能力。以下是对该课程的严谨阐述&#xff1a; 一、课程核心原理与应用 本课程详尽阐述了IP协议簇的基本原理与应用&#xff0c;具体涵盖I…

Github 2024-08-02Java开源项目日报 Top9

根据Github Trendings的统计,今日(2024-08-02统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9Vue项目1Ruby项目1Java设计模式:提高开发效率的正规化实践 创建周期:3572 天开发语言:Java协议类型:OtherStar数量:86766 个Fork数…

ECCV 2024 | 深入探索GAN先验,哈工大、清华提出模型反演新方案

介绍 模型反演&#xff08;MI&#xff09;攻击的目的是利用输出信息从已发布的模型中重建隐私敏感的训练数据&#xff0c;这引起了人们对深度神经网络&#xff08;DNNs&#xff09;安全性的广泛关注。近年来&#xff0c;生成对抗网络&#xff08;GANs&#xff09;因其强大的图像…

4.Rabbon-微服务负载均衡

Rabbon-微服务负载均衡 1.Ribbon是什么1.1 基本概念1.2 主要功能1.3 负载均衡流程1.4 负载均衡策略 2.Ribbon如何使用2.1 基于配置文件的配置&#xff1a;2.2 基于注解的配置&#xff1a; 1.Ribbon是什么 Ribbon是Netflix发布的一个负载均衡器&#xff0c;它主要用于控制HTTP和…

PT4103B23F 白光LED升压转换器芯片IC

一般概述 PT4103是一款升压型DC/DC转换器&#xff0c;设计用于以恒流方式驱动单个锂离子电池中的多达8个串联的白光LED。由于PT4103直接调节输出电流&#xff0c;因此它非常适合驱动发光二极管(LED)&#xff0c;其光强度与流经它们的电流成正比&#xff0c;而不是与它们…

Bugku-Web篇:Simple_SSTI_1

1.很简单的模板注入&#xff0c;直接f12查看源代码。 2.这里了解了一下什么是模板注入 这里针对的是flask模板&#xff0c;config是flask模板中的一个全局对象。包含了所有应用程序的配置值。 这里直接在url中写上 ?flag{{config.SECRET_KEY}}

力扣第四十八题——旋转图像

内容介绍 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9…

初识c++:stack和queue详解

本节大纲&#xff1a; #stack和queue详解# 1.容器适配器 2.stack的介绍和使用 2.1 stack的介绍 2.2 stack的使用 3.stack的模拟实现 4.queue的介绍和使用 4.1 queue的介绍 4.2 queue的使用 5.queue的模拟实现 6.priority_queue的介绍和使用 6.1 priority_queue的介绍…