布尔数据 BOPDS_Iteratoreryar@163.com1 IntroductionOpenCASCADE中新的布尔工具TKBO相对已经废弃的TKBool代码更规范,更易于理解。与ModelingData和ModelingAlgorithms大的模块组织一样,主要也是数据结构Data Structure+算法Algorithm的组织形式。其中BOPDS为布尔中的数据结构部分,BOPAlgo为布尔中的算法部分。理解算法的前提是先理解数据结构DS(Data Structure),所以先从数据结构入手,来深入理解布尔操作。本文先从简单的数据结构BOPDS_Iterator开始对源码进行分析。 2 BOPDS_Iterator从类的注释可以看出,迭代器BOPDS_Iterator有以下两个功能:- 找出包围盒相交的Shape;- 遍历相交的一对Shape;//! The class BOPDS_Iterator is
//! 1.to compute intersections between BRep sub-shapes
//! of arguments of an operation (see the class BOPDS_DS)
//! in terms of theirs bounding boxes
//! 2.provides interface to iterat
...继续阅读
(99)
前端沙盒的概述什么是前端沙盒前端沙盒是一种技术手段,用于在浏览器环境中创建一个隔离的、受限制的代码执行环境。在这个环境中,我们可以执行一些不受信任的代码,而不用担心它会对我们的应用程序或用户数据造成损害。more目的和优势前端沙盒的主要目的是提高应用程序的安全性。通过使用沙盒技术,我们可以防止恶意代码的执行,保护用户数据和隐私。此外,沙盒还可以帮助我们限制代码的功能和访问权限,以防止其执行不安全的操作。主要场景前端沙盒主要解决以下场景:第三方代码集成:在 Web 应用中,我们经常需要集成第三方库、插件或者广告代码。这些代码可能存在安全隐患,如恶意代码、XSS 攻击等。使用前端沙盒技术,我们可以在隔离的环境中执行这些不受信任的代码,降低安全风险。用户自定义代码执行:在一些在线编程平台、教育工具或者可视化编辑器中,用户可能需要编写并执行自定义的 JavaScript 代码。前端沙盒可以为用户提供一个安全的代码执行环境,防止恶意代码对应用程序或其他用户数据造成破坏。多租户应用:在多租户应用中,不同租户的代码可能需要在同一个浏览器环境中运行,但又需要相互隔离以保护数据安全。前端沙盒技术可以为每个租户创建独立的执行环境,确保数据和资源的隔离。性能隔离:在复杂的 Web 应用中,某些耗时的任务可能会影响到页面的性能和响应速度。使用前端沙盒技术,如 Web Workers,可以将这些任务放在后台
...继续阅读
(54)
性能提升-BVH层次包围体eryar@163.comAbstract. OpenCASCADE provides BVH to achieve high performance in AIS of visualization module. To understand BVH usage will help us to understand many code of opencascade.Key Words.BVH, Bounding Volume Hierarchy, LBVH, SAH Algorithm1 Introduction层次包围体技术 (BVH) 指的是将所有包围体分层逐次地再次包围,获得一个更大的包围体,直到包围住所有物体。实际上,它是一个树形结构,因此可以仿照树的结构,将两个或三个小的包围体包围成一个更大的包围体,以此类推。BVH是一种以物体BV为基础进行划分的结构。它由根节点、内部节点和叶子节点组成。其中叶子节点存放物体,每个非叶子节点都有包围体,父节点可以把子节点包围起来。每个非叶子节点的包围体大小,是它所包含的所有物体的包围体的总和,所以它在空间上比较紧凑,非常适用于需要大量求相交测试的应用场景,如光线追踪、碰撞检测、射线相交测试之类的应用场合中。 BVH在OpenCASCADE中也有广泛地应用,如开源版本中的模型快速碰撞检测,使用类BRepExtrem
...继续阅读
(86)
前言欢迎了解和关注limu,访问文档并点击右键调出控制台后可实时体验limu api 和 immer api做对比(全局已绑定limu和immer对象)。接下来让我们一起深入了解limu的诞生历程吧 ^\_^不可变数据的现状不可变数据由于拥有结构共享的特性,让一些严重依赖浅比较的框架快速获得性能收益(如react),同时也让一些需要使用严格不可变数据的场景避免了深克隆带来的冗余性能开销,而当下除了immutablejs 和 immer 这两款非常流行的工具库之外,有没有一款比它们的性能和易用性都更好的不可变数据工具库呢?在回答此问题之前,我们先看下immutablejs和immer陷入的困境。immutablejs作为一个先驱者,最早的git提交记录可以追溯到2014年4月,伴随着react的不可变状态编程理念在2015年之后开始越来越走红,现已达到30K+ star数量,它在js语言世界里拥有为不可变数据指引方向般的重要地位,带领大家认识到了不可变数据在某些特定编程领域的重要性。不过它的问题也比较突出,主要归结为2点1 api 复杂,与原始js操作处理隔离的状态,有很重的学习成本和记忆负担2 内建了一套自己的数据结构,需要通过fromJs和toJs做普通json和不可变数据直接的相互转换,带来了额外的开销。// 额外的学习成本和记忆负担
immutableA = Immutabl
...继续阅读
(76)
性能提升-空间二叉查找树eryar@163.comAbstract. OpenCASCADE provides NCollection_UBTree to achieve high performance search overlapped boxes. The algorithm of unbalanced binary tree of overlapped bounding boxes. Once the tree of boxes of geometric objects is constructed, the algorithm is capable of fast geometric selection of objects. The tree can be easily updated by adding to it a new object with bounding box. The time of adding to the tree of one object is O(log(N)), where N is the total number of objects, so the time of building a tree of N objects is O(N(log(N)). The search time of one object is
...继续阅读
(79)