热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CloudCompare中DgmOctree结构的分析

CloudCompare中使用DgmOctree作为八叉树数据结构。具体实现过程如下:如上图所示,使用3个bit位存储当前级别中点在八叉树的位置。3位中

CloudCompare中使用DgmOctree作为八叉树数据结构。具体实现过程如下:

如上图所示,使用3bit位存储当前级别中点在八叉树的位置。3位中的顺序:zyx顺序区分。从小递增到大。

011表示的是在当前level中的位置。

64位编译环境时:最高允许有21层次的分割,32位编译环境时:最高允许有10层次的分割。

(1)CellCode的定义

#ifdef OCTREE_CODES_64_BITS

    using CellCode = unsigned long long; //max 21 levels (but twice more memory!)

#else

    using CellCode = unsigned; //max 10 levels

#endif

对于最高21层次的分割,每层需要3bit存储其在当前层次的位置,故21*3=63bit存储其当前的CellCode

(2)CellCode的编码初始化

这个步骤主要是建立单维上坐标(xyz)和CellCode的映射关系

具体映射方法如下:

将原有的value按位,扩充至3位。


Value

CellCode

0

0(000)

1

1(001)

2

8(001 000)

3

9(001 001)

4

64(001 000 000)

CellCode是按照低级别在高位,高级别在低位方式存储。对于64位编译环境,一个CellCode对应long long结构,存储了1-N的所有信息。

 

(3)CellPos分析

CellPos存储的是当前最高级别划分下的对应xyz坐标系中的坐标。由于是最高级别下的坐标,所以其最大值不会超过2^21(64位编译环境下)

(4)CellPosCellCode的转换

建立DgmOctree的时候,dec一直为0。其表示的是处于MAX_OCTREE_LEVEL级别时的CellCode

dec不为0时候,其表示的是当前传入的level下的CellCode

上述是按照zyx样式bit组合顺序,将三维的CellCode组合起来。

 

(5)CloudCompareOctree的使用

菜单栏Edit > Octree > Compute

勾选Octree显示,切换显示级别,可显示当前level下的外廓线

参考

[1] https://www.cloudcompare.org/doc/wiki/index.php?title=CloudCompare_octree

 


推荐阅读
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 汽车电子架构与CAN网络基础解析——鉴源实验室专业解读 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 在本篇学习指南中,我们将探讨 Spring Cloud 2020 版本中的技术选型和版本选择策略。具体来说,我们将详细介绍如何在项目中选用 Spring Boot 和 Spring Cloud 的最佳组合。本文以 Spring Boot 2.2.2 为例,结合实际应用场景,提供详细的配置和使用建议,帮助开发者更好地理解和应用这些框架。此外,我们还将讨论不同版本之间的兼容性和升级路径,确保项目能够平稳过渡到最新版本。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在Android平台上,视频监控系统的优化与应用具有重要意义。尽管已有相关示例(如http:www.open-open.comlibviewopen1346400423609.html)展示了基本的监控功能实现,但若要提升系统的稳定性和性能,仍需进行深入研究和优化。本文探讨了如何通过改进算法、优化网络传输和增强用户界面来提高Android视频监控系统的整体效能,以满足更复杂的应用需求。 ... [详细]
  • 国产PLC软件PikePLC:基于IEC 61131-3 V2.0标准的扩展与创新
    PikePLC在遵循IEC 61131-3 V2.0标准的基础上,对ST编程语言进行了多项扩展与创新。具体而言,PikePLC引入了对“BIT”类型变量的支持,允许用户在变量定时中定义此类变量。此外,该软件还增强了对位类型和整数类型变量的按位访问功能,进一步提升了编程的灵活性和效率。这些改进不仅丰富了编程语言的功能,还为工业自动化应用提供了更强大的支持。 ... [详细]
  • 本文探讨了如何有效地构建和优化微信公众平台账号,涵盖了用户信息管理、内容创作与发布、互动策略及数据分析等方面。通过合理设置用户信息字段,如用户名、昵称、密码、真实姓名和性别等,确保账号的安全性和用户体验。同时,文章还介绍了如何利用微信公众平台的各项功能,提升用户参与度和品牌影响力。 ... [详细]
author-avatar
手机用户2502885835
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有