OCC 7.8.0 对TopoDS_Shape哈希码接口的调整

这篇具有很好参考价值的文章主要介绍了OCC 7.8.0 对TopoDS_Shape哈希码接口的调整。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在OCC 7.6.0中,拓扑元素是可以直接获取其哈希码的,接口为

Standard_Integer TopoDS_Shape::HashCode	(	Standard_Integer 	theUpperBound	)	const

OCC 7.8.0 对TopoDS_Shape哈希码接口的调整,OCC开发,哈希算法,算法

将项目更新为7.8.0之后,该函数报错,提示没有该成员函数

OCC 7.8.0 对TopoDS_Shape哈希码接口的调整,OCC开发,哈希算法,算法

比较7.6.0和7.8.0的TopoDS_Shape.hxx的源代码,发现确实7.8.0中删除了该源码,但是仍然可以获取哈希值,只不过进行了调整

OCC 7.8.0 对TopoDS_Shape哈希码接口的调整,OCC开发,哈希算法,算法

代码调整为如下:

namespace std
{
  template <>
  struct hash<TopoDS_Shape>
  {
    size_t operator()(const TopoDS_Shape& theShape) const noexcept
    {
      const size_t aHL = std::hash<TopLoc_Location>{}(theShape.Location());
      return aHL == 0 ? opencascade::hash(theShape.TShape().get())
                      : opencascade::MurmurHash::hash_combine(theShape.TShape().get(), sizeof(void*), aHL);
    }
  };
}

上述代码的思路如下:

1. hash<TopLoc_Location>调用TopoDS_Shape的Location方法返回值的哈希值。Location返回的是当前形状的位置信息。

2. 如果Location的哈希值是0(即没有定位信息),那么仅使用TShape的指针调用opencascade::hash函数来计算哈希值。

3. 如果Location的哈希值非0,那么调用opencascade::MurmurHash::hash_combine将TShape指针的内存地址和Location的哈希值结合起来生成最终的哈希值。hash_combine通常用于将多个哈希值合并成一个。

 如果还是想像之前一样获取某个拓扑元素的哈希值,应当如下方式获取:文章来源地址https://www.toymoban.com/news/detail-803337.html

size_t aHL = std::hash<TopoDS_Shape>{}(XXX)

到了这里,关于OCC 7.8.0 对TopoDS_Shape哈希码接口的调整的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】堆:堆的构建,堆的向上调整算法,堆的向下调整算法、堆排序

    目录 一、堆的定义 1、堆的定义: 2、根节点与其左、右孩子间的联系   二、堆的创建 1、堆的向下调整算法  2、堆的向上调整算法  三、堆排序 1、堆的定义: 堆可以被看作是 一棵 完全二叉树 的 数组 对象 。即在 存储结构上是数组,在逻辑结构上是一棵完全二叉树 。在

    2024年01月22日
    浏览(43)
  • 针对小程序wx.getUserProfile接口将被收回后做出的授权调整

    小程序文档中提出的调整说明 调整说明: 自 2022 年 10 月 25 日 24 时后(以下统称 “生效期” ),用户头像昵称获取规则将进行如下调整: 自生效期起,小程序 wx.getUserProfile 接口将被收回:生效期后发布的小程序新版本,通过 wx.getUserProfile 接口获取用户头像将统一返回默认

    2024年02月09日
    浏览(41)
  • TOP-K问题和向上调整算法和向下调整算法的时间复杂度问题的分析

    TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大 比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等 对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下

    2024年02月04日
    浏览(39)
  • Springboot调整接口响应返回时长详解(解决响应超时问题)_springboot设置请求超时时间

    1、配置Http会话超时 可以通过两种方式为Spring Boot应用程序 配置HTTP会话超时 。 1.1 application.properties中配置会话超时 最简单的方法是在你的application.properties中加入参数 server.servlet.session.timeout 。 还要注意的是, Tomcat不允许你将超时时间设置得少于60秒 。 1.2 以程序方式配置会

    2024年04月27日
    浏览(71)
  • 描述点云特征提取中法线和曲率计算、特征值分析、PFH、FPFH、3D Shape Context、Spin Image的算法原理

    法线和曲率计算 :点云法线和曲率是点云数据特征提取的基础,可以通过最小二乘拟合或基于协方差矩阵的方法计算。对于每个点,根据周围点的位置和构成法向量,可以计算出该点的法向量和曲率。 特征值分析(Eigenvalue Analysis) :特征值分析是一种方法,用于计算点云数

    2024年02月10日
    浏览(33)
  • 哈希算法--MD5算法

    哈希算法也称摘要算法、散列算法,哈希函数的输入为一段 可变长度x ,输出一 固定长度串 ,该串被称为 x的哈希值 。 Hash函数满足以下几个基本需求: (1)输入值x为任意长度 (2)输出值长度固定 (3)单向函数,算法不可逆 (4)唯一性,很难找到两个不同的输入会得到

    2023年04月18日
    浏览(73)
  • Python实现图片亮度调整算法

    Python实现图片亮度调整算法 图片亮度调整是图像处理中常用的技术之一。通过改变图片的亮度,可以使得图片更清晰、更具艺术效果。下面将介绍如何使用Python实现这一功能。 首先,我们需要导入Python中的图像处理库PIL: 接下来,我们需要打开一张图片,并进行亮度调整。

    2024年02月08日
    浏览(36)
  • 【SM3哈希算法】算法原理

    参考: SM3算法是一种密码散列函数标准,由国家密码管理局发布。它的安全性和SHA-256相当,适用于商用密码应用中的数字签名和验证、消息认证码生成和验证、随机数生成等。 将输入的消息分成512位的分组,并对每个分组进行填充、分组、扩展、迭代压缩等操作,最后输出

    2024年02月08日
    浏览(42)
  • 【数据结构与算法】哈希—— 位图 | 布隆过滤器 | 哈希切割

    🐱作者:一只大喵咪1201 🐱专栏:《数据结构与算法》 🔥格言: 你只管努力,剩下的交给时间! 哈希是一种映射思想,这里再讲解两种应用哈希思想的数据结构。 问题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数

    2024年02月02日
    浏览(57)
  • 加密算法、哈希算法及其区别+国密简介

    现代加密算法是信息安全领域中常用的算法,用于保护数据的机密性和完整性。以下是一些常用的现代加密算法: 目标 :加密算法的主要目标是保密性(Confidentiality),它用于将明文数据转换为密文数据,以确保只有授权的用户或实体可以解密和访问数据。加密算法的目标

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包