CGAL中流线的二维放置

news2024/9/25 17:21:21

        本章介绍CGAL 2D流线放置包。定义一节给出了基本定义和概念。基本概念一节对整合过程进行了描述。最远点播种策略一节简要介绍了该算法。“实现”一节介绍了包的实现,“示例”一节详细介绍了两个示例放置。 

         该算法的核心思想是对域中最大空腔中心的流线进行积分(左)。所有采样点的Delaunay三角测量用于对域(中间)内的流线和空间进行建模。最终结果如图所示(右)。

1、定义

        在物理学中,场是对空间中的每个点分配一个量。例如,引力场为空间中的每个点指定一个引力势。

        矢量场和方向场通常用于建模物理现象,其中方向和大小,即矢量被分配给域内的每个点(例如磁场中每个点处的力的大小和方向)。

        流线是可视化流场的重要工具。流线*是一条处处与场相切的曲线。在实践中,流线通常表示为从种子点开始通过双向数值积分迭代拉长的多段线(一系列点),直到它接近另一条流线(根据称为分离距离的指定距离)、到达域边界、到达临界点或生成闭合路径。

        流线的有效放置包括根据流线之间的分离距离确定的指定密度,用一组切向流线饱和域。

2、基本概念

        流线可以被认为是一个假想的无质量粒子落入由场描述的稳定流体流中所追踪的路径。这条路径的构造包括求解连续时间间隔的常微分方程。通过这种方式,我们获得了一系列点pk,0<k<n,这些点允许可视化流线。微分方程定义如下:

dp/dt=v(p(t)),      p(0)=p0

        其中p(t)是粒子在时间t的位置,v是在域中的每个点分配矢量值的函数(可能通过插值),p0是初始位置。给定间隔Δt之后的位置由下式给出:


p(t+Δt)=p(t)+∫t+Δttv(p(t))dt

        已经提出了几种数值方法来求解这个方程。在这个程序包中,实现了欧拉和二阶龙格-库塔算法。

2.1、欧拉积分器

        这个算法用这个公式近似计算点 :pk+1=pk+hv(pk)。

        其中,h指定积分步骤*。可以通过指定正(或负)积分步骤h向前(或向后)进行积分。然后,通过从种子点向前和向后连续积分来构建流线。

2.2、二阶龙格-库塔积分器

        龙格-库塔二阶积分器(空圆表示中间点,灰盘表示欧拉积分点)。 

        该方法在pk和pk+1之间引入了一个中间点p′k,以提高计算精度,其中:

3、最远点播种策略

        该软件包中实现的算法包括通过数值积分一次放置一条流线,从距离所有先前放置的流线最远的地方开始。

        我们的算法的输入由

        (i)流场,(ii)由理想间距的倒数全局指定的密度,或由密度场局部指定的密度和(iii)触发新流线的播种所需的期望间距的饱和比给出。

        输入流场由在域内采样的矢量或方向的离散集给出,该离散集与插值方案相关(例如,规则网格上的双线性插值,或不规则点集上的自然邻居插值,以允许在域内的每个点坐标处进行评估)。

        输出是流线放置,表示为流线列表。我们算法的核心思想是通过在距离所有先前放置的流线最远的点播种的数值积分,一次放置一条流线。

        流线由多段线近似,多段线的点插入二维Delaunay三角测量。Delaunay三角形的空外接圆为我们提供了域中空腔的良好近似。

        在每次流线积分后,所有外接圆直径大于(在饱和比内)所需间距的入射三角形都被推送到按三角形外接圆半径排序的优先队列中。为了开始每个新的流线积分,将从队列中弹出外接圆直径最大的三角形(因此也是最大的空腔)。我们首先测试它是否仍然是三角测量的有效三角形,因为它可能已经被之前添加到三角测量中的流线破坏。如果不是,我们从队列中弹出另一个三角形。如果是,我们使用其外接圆的中心作为种子点来集成新的流线。

        当优先级队列为空时,我们的算法终止。最大空腔的大小是单调递减的,我们的算法保证了域饱和。

4、实施

        流线表示为多段线,并通过从种子点进行迭代积分来获得。多段线表示为一系列点。计算通过Delaunay三角测量顶点列表进行处理。

        为了实现三角形网格,使用类Delaunay_triangulation_2。用于存储候选种子点的优先级队列取自标准模板库。

        关于CGAL中的Stream_lines_2,这是一个CGAL的算法库中的一种流线算法,用于在二维空间中计算流线。流线是物理学中的一个概念,表示在某个给定时刻,某个给定点上的粒子所经过的路径。在计算机图形学和科学可视化中,流线算法被广泛应用于模拟流体动力学、空气动力学等物理现象。

        CGAL::Regular_grid_2是CGAL库中的一个类,用于表示二维的规则网格。这个类提供了用于创建、操作和查询规则网格的方法。

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

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

相关文章

HuggingFace下载模型

目录 方式一&#xff1a;网页下载 方式二&#xff1a;Git下载 方式一&#xff1a;网页下载 方式二&#xff1a;Git下载 有些模型的使用方法页面会写git clone的地址&#xff0c;有些没写&#xff0c;直接复制网页地址即可 网页地址&#xff1a; ​https://huggingface.co/…

12.19_黑马数据结构与算法笔记Java

目录 203 排序算法 选择排序 204 排序算法 堆排序 205 排序算法 插入排序 206 排序算法 希尔排序 207 排序算法 归并排序 自顶至下 208 排序算法 归并排序 自下至上 209 排序算法 归并加插入 210 排序算法 单边快排 211 排序算法 双边快排 212 排序算法 快排 随机基准…

技术博客:市面上加密混淆软件的比较和推荐

引言 市面上有许多加密混淆软件可供开发者使用&#xff0c;但哪些软件是最好用的&#xff1f;哪些软件受到开发者的喜爱&#xff1f;本文将根据一次在CSDN上的投票结果&#xff0c;为大家介绍几款在程序员中普及度较高的加密软件。以下是投票结果&#xff0c;希望能对大家的选…

【jvm从入门到实战】(十) 实战篇-内存调优

内存溢出和内存泄漏&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收&#xff0c;这种情况就称之为内存泄漏。内存泄漏绝大多数情况都是由堆内存泄漏引起的。少量的内存泄漏可以容忍&#x…

MySQL5.x与8.0

大致区别 1. 性能&#xff1a;MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍 MySQL 8.0 在以下方面带来了更好的性能&#xff1a;读/写工作负载、IO 密集型工作负载、以及高竞争&#xff08;"hot spot"热点竞争问题&#xff09;工作负载2. NoSQL&#xff1a;MySQL 从 5.7 …

CPU算力分配 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 现有两组服务器A和B,每组有多个算力不同的CPU,其中 A 是A组第个CPU的运算能力,是 B组 第个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。 为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换。 求…

基于PHP的蛋糕购物商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的蛋糕购物商城系统 一 介绍 此蛋糕购物商城基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销…

做一个wiki页面是体验HTML语义的好方法

HTML语义&#xff1a;如何运用语义类标签来呈现Wiki网页 在上一篇文章中&#xff0c;我花了大量的篇幅和你解释了正确使用语义类标签的好处和一些场景。那么&#xff0c;哪些场景适合用到语义类标签呢&#xff0c;又如何运用语义类标签呢&#xff1f; 不知道你还记不记得在大…

爱芯派pro通过无线网卡rtl8188eu连接热点

爱芯派pro通过无线网卡rtl8188eu连接热点 爱芯派pro目前的底板的pcie的复位有问题&#xff0c;所以pcie接口无法挂载上去&#xff0c;所以自己购买的rtl8822网卡也用不了&#xff0c;然后想起来自己还有正点原子的rtl8188eu网卡&#xff0c;但是没有和工作人员进行摸索后才知道…

Swagger升级指南:Swagger2与Swagger3注解差异揭秘

在API开发的世界里&#xff0c;Swagger已经成为了一个不可或缺的工具&#xff0c;它让API的文档化和前后端的协作变得前所未有地简单。随着Swagger的进化&#xff0c;我们迎来了Swagger3&#xff0c;也被称为OpenAPI Specification 3.0。本篇博客将带大家深入了解Swagger2和Swa…

【Python 基础】-- 在 mac OS 中安装 多个 python 版本

目录 1、需求 2、实现 2.1 安装 pyenv 2.2 安装 pyenv-virtualenv 2.3 配置环境变量 2.4 创建 python 3.9.9 的环境 2.5 激活环境&#xff0c;在当前项目目录中使用&#xff0c;即执行 python 1、需求 由于项目所依赖的 python 版本有多个&#xff0c;需要在不同的 pyth…

在线客服系统中的全渠道服务:多渠道整合与无缝沟通体验

很多采购人员在了解在线客服系统的时候都会遇到一个名词——全渠道。很多人第一次接触可能并不理解它是什么意思&#xff0c;也不知道自己的企业是否需要这个”全渠道“。今天这篇文章就为大家解答一二。 一、全渠道是什么&#xff1f; 全渠道 (Omni-Channel)&#xff0c;就是…

DeepLabV3+实现sar影像海面溢油区识别

今天我们分享DeepLabV3的sai影像水体提取。 数据集 本次使用的数据集是Deep-SAR Oil Spill (SOS) dataset。该数据集由中国地质大学的朱祺琪团队制作并共享。该数据集包含墨西哥湾溢油区域和波斯湾溢油区域&#xff0c;分别获取于ALOS 和Sentinel-1A卫星。由ECHO研究组搜集制作…

说说 Spring Boot 实现接口幂等性有哪几种方案?

一、什么是幂等性 幂等是一个数学与计算机学概念&#xff0c;在数学中某一元运算为幂等时&#xff0c;其作用在任一元素两次后会和其作用一次的结果相同。 在计算机中编程中&#xff0c;一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等…

【go语言】error错误机制及自定义错误返回类型

简介 Go 语言通过内置的 error 接口来处理错误&#xff0c;该接口定义如下&#xff1a; type error interface {Error() string }这意味着任何实现了 Error() 方法的类型都可以作为错误类型。在 Go 中&#xff0c;通常使用 errors 包的 New 函数来创建简单的错误&#xff1a;…

三维尺寸中,您需要了解的设备及其特点

三维尺寸测量需要用到一些精密仪器&#xff0c;它们都有各自的特点。那么三维尺寸测量中常用的设备有哪些&#xff1f; 1、三坐标测量机 三坐标测量机即三坐标测量计算机数控系统&#xff0c;是一种高精度的测量设备。除了传统的点、线、面和圆柱体等基本轮廓外&#xff0c;还可…

车辆违规实线变道检测系统:融合Gold-YOLO改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着城市化进程的加快和交通工具的普及&#xff0c;道路交通安全问题日益凸显。其中&#xff0c;车辆违规实线变道是导致交通事故的重要原因之一。在道路上&…

游戏引擎?

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具&#xff0c;其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台&#xff0c;如Linux、…

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32&#xff0c;并调试相关功能 使用的CLion版本&#xff1a;2023.3.1 CLion嵌入式配置教程&#xff1a;STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载&#xff1a;Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

【物联网无线通信技术】WiFi从理论到实践(ESP8266)

文章从理论基础到具体实现完整的介绍了最常见的物联网无线通信技术&#xff1a;WiFi。 文章首先介绍了WiFi这种无线通信技术的一些基本概念&#xff0c;并针对其使用的802.11协议的基本概念与其定义的无线通信连接建立过程进行了简单的介绍&#xff0c;然后对WiFi开发常常涉及的…