CGAL的无限制的Delaunay图

news2024/9/21 18:45:11

        本章描述了构建L∞距离下线段Delaunay图的算法和几何特征。这些特征还包括绘制L∞距离下线段Delaunay图对偶(即L∞距离下线段Voronoi图)边缘的方法。L∞算法和特征依赖于欧几里得(或L2)距离下的线段Delaunay图算法和特征。L∞度量中的分段Voronoi图在VLSI设计中具有应用。

        在定义部分,我们给出了一些定义。在软件设计部分,我们解释了算法和特征的设计。

 

一组弱(左)和强(右)相交点的L∞分段Voronoi图。 

1、定义

        如果一对分段站点有一个公共点,并且这个公共点不在两个站点的任何内部,则称它们为弱相交。 如果一对分段站点相交,并且它们有一个以上的公共点,或者它们的公共点位于两个站点中的至少一个内部,则称它们为强相交。 如果一组分段站点中的所有对都是弱相交(强相交)或不相交,则称其为弱相交(强相交)。 见图。

        给定平面上的两点p=(px,py),q=(qx,qy),它们的L∞距离为

        d∞(p,q)=max(|px-qx|,|py-qy|)。

        不难看出,与定点c相距相等固定L∞距离r的点的几何轨迹是中心为c、边长为2r的轴平行正方形(L2中的类似物是中心为c、直径为2r的圆)。

        如果我们假设站点的一般位置,那么两点之间或一点与一段之间的 L∞ 等分线是多边形链;示例见图。这与 L2 沃罗诺伊图形成鲜明对比,其中一点与一段之间的等分线是抛物线弧。在 L∞ 沃罗诺伊图中,如果输入站点的坐标是有理数,则图中的顶点坐标也是有理数,而 L2 图则不是这样。有关 L∞ 等分线和图的更多详细信息,请参见。

L∞平分两点之间以及线段和点之间的距离。 

         与L2设置相比,L∞设置中的一个非常重要的区别是,在一些特殊的非一般位置情况下,两个站点之间的L∞平分线可以是二维的。由于这在绘制图表时会产生问题,我们通过将平分线二维区域的一部分分配给平分线的两个站点,对这些平分线进行一维化。此外,在采用L∞图表的VLSI应用中,这种图表的简化是可以接受的。

        如果两个不同的点p,q共享一个坐标,则它们的L∞平分线是二维的,如图52.3所示。在这种特殊情况下,我们通过取这两个点的欧几里得平分线来一维化平分线。

具有相同y坐标的两点之间的L∞平分线及其一维化。

         同样地,如图所示,轴平行线段内部与其端点之一之间的平分线也是二维的。我们通过取穿过端点并与线段垂直的线来一维化该平分线。

 垂直线段与其一个端点之间的L∞平分线及其一维化。

2、软件设计

        一般来说,L∞分段Delaunay图的算法和特征的软件设计依赖于L2分段Delaunay图的相应算法和特征。我们将L∞类实现为2D分段Delaunay图包中相应L2类的子类。与相应的L2类相比,L∞类的名称在图后包含额外的_Linf。

        L∞图构造的复杂度顺序与L2图相同,因此我们建议最终用户参考[2]进行复杂度分析。

2.1、线段Delaunay图

        Voronoi图适配器包中的Voronoi_diagram_2类可用于从L∞段Delaunay图(或层次结构)中获取L∞段Voronoi图。

2.2、线段Delaunay图特征

        与L2的情况一样,几何谓词非常复杂,我们不会为最终用户提供细节。我们的实现尽可能重复使用L2特性,但存在很大差异。我们支持几何和算术过滤,就像L2谓词一样。

        与L2设置类似,SegmentDelaunayGraphLinfTraits_2概念有四个模型,其中两个支持强相交位点(Segment_Dlaunay_graph_Linf_traits_2、Segment_DLaunay_graph_Linf_filtered_traits_2),并且其中两个不支持交叉位点(Sement_DlaunaY_graph_Linf_traits_without_interctions_2、Segment-Dlaunay_Grah_Linf_ffiltered_trats_without _interctionS_2)。请参阅Delaunay图形包手册的优化内存分配小节,该小节解释了何时使用这些特性中的每一个。

2.3、线段Delaunay图的层次

        Segment_Dlaunay_graph_Linf_hierarchy_2类等效于Segment_DLaunay_graph_hierarchy_2,但它在层次结构的每个级别中都使用Segment_Daunay_graph-Linf_2类,而不是Segment_Delanay_graph_2。

2.4、从Delaunay图求Voronoi图

        Voronoi图适配器包中的Voronoi_diagram_2类可用于获得L∞从L∞节段Delaunay图(或层次结构)中分割Voronoi图。

3、其他

        CGAL::Segment_Delaunay_graph_Linf_2 是CGAL库中的一个类,它表示一个L∞分段Delaunay图。

CGAL 5.6 - L Infinity Segment Delaunay Graphs: User Manual

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

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

相关文章

【动态规划】C++算法:44 通配符匹配

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 LeetCode44 通配符匹配 给你一个输入字符串 (s) 和一个字符模式 ,请你实现一个支持 ‘?’ 和 ‘’ 匹配规则的通配符匹配: ‘?’ 可以匹配任何单个字符。 ’ 可以匹配…

动手学深度学习之卷积神经网络之池化层

池化层 卷积层对位置太敏感了,可能一点点变化就会导致输出的变化,这时候就需要池化层了,池化层的主要作用就是缓解卷积层对位置的敏感性 二维最大池化 这里有一个窗口,来滑动,每次我们将窗口中最大的值给拿出来 还是上…

大创项目推荐 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系…

【JavaFX】JavaFX11开发踩坑记录

文章目录 技术栈踩坑记录 技术栈 JavaFX 11MavenJDK 11 踩坑记录 这些坑对于初学者很容易踩,JavaFX经常会报错空指针异常遇到其中一个问题可能就会消耗好几天的时间。 JavaFX 采用的是MVC架构设计,页面设计使用 fxml文件;业务逻辑采用Con…

k8s的网络

k8s的网络 k8s中的通信模式: 1、pod内部之间容器与容器之间的通信 在同一个pod中的容器共享资源和网络,使用同一个网络命名空间,可以直接通信的 2、同一个node节点之内,不同pod之间的通信 每个pod都有一个全局的真实的ip地址…

qt 异常汇总

1. C2338 No Q_OBJECT in the class with the signal (编译源文件 ..\..\qt\labelme-master\src\mainwindow.cpp mainwindow头文件中的类没有Q_OBJECT宏定义,或者其子类或者其他依赖没有Q_OBJECT宏定义。 全部qt类都要写上Q_OBJECT. 2. C2385 对connect的访…

AI:116-基于深度学习的视频行为识别与分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

ctfshow——PHP特性

文章目录 web 89web 90web 91web 92web 93web 94web 95web 96web 97web 98web 99 web 89 使用人工分配 ID 键的数值型数组绕过preg_match. 两个函数: preg_match():执行正则表达式,进行字符串过滤。preg_match函数用法,正则表达式…

uni-app 前后端调用实例 基于Springboot 详情页实现

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

【Java EE初阶七】多线程案例(生产者消费者模型)

1. 阻塞队列 队列是先进先出的一种数据结构; 阻塞队列,是基于队列,做了一些扩展,适用于多线程编程中; 阻塞队列特点如下: 1、是线程安全的 2、具有阻塞的特性 2.1、当队列满了时,就不能往队列里…

Yapi安装配置(CentOs)

环境要求 nodejs(7.6) mongodb(2.6) git 准备工作 清除yum命令缓存 sudo yum clean all卸载低版本nodejs yum remove nodejs npm -y安装nodejs,获取资源,安装高版本nodejs curl -sL https://rpm.nodesource.com/setup_8.x | bash - #安装 s…

图片中src属性绑定不同的路径

vue3 需求是按钮disable的时候,显示灰色的icon;非disable状态,显示白色的icon 一开始src写成三元表达式,发现不行,网上说src不能写成三元表达式,vue会识别成字符串 最后的解决方案 同时,发现…

win下持续观察nvidia-smi

简介:在Windows操作系统中,没有与Linux中watch命令直接对应的内置工具,但有1种方法快速简单的方法可以实现类似的效果,尤其是用于监控类似于nvidia-smi的命令输出。 历史攻略: Python:查看windows下GPU的…

美国地质调查局历史地形图

简介 美国地质调查局地形图的历史可以追溯到 19 世纪末,当时美国地质调查局开始着手绘制整个美国的详细地图。1:24,000 比例尺,也称为 7.5 分四边形地图,成为最广泛使用的比例尺之一。每张地图覆盖 7.5 分经纬度的区域,从而详细呈…

在Docker中安装Tomact

目录 前言: 一.安装Tomact 查找指定的tomact版本 下载tomact9.0 查看该镜像是否安装成功 安装成功之后就开始运行镜像了 ps(用于列出正在运行的Docker容器) ​编辑 测试(虚拟机ip:8080) ​编辑 解决措施 ​编辑 完成以上步骤&…

【Nginx】反向代理和负载均衡

反向代理 nginx 反向代理,就是将前端发送的动态请求由 nginx 转发到后端服务器。 server {listen 80;server_name localhost;# 反向代理,处理管理端发送的请求location /api/ {proxy_pass http://localhost:8080/admin/;#proxy_pass http://webservers/…

【Electron】快速建立Vue3+Vite+Electron Ts项目

git https://github.com/electron-vite/electron-vite-vue 创建项目 npm create electron-vite or pnpm create electron-vite 初始化 pnpm install or pnpm i 启动项目 pnpm dev 打包项目 pnpm build 项目创建成功后默认情况下 窗口是H800 W600 在createWindow 函数…

计算机视觉中的神经网络可视化工具与项目

前言 本文介绍了一些关于神经网络可视化的项目,主要有CNN解释器,特征图、卷积核、类可视化的一些代码和项目,结构可视化工具,网络结构手动画图工具。 CNN解释器 这是一个中国博士发布的名叫CNN解释器的在线交互可视化工具。 主要…

macOS跨进程通信: FIFO(有名管道) 创建实例

一: 简介 在类linux系统中管道分为有名管道和匿名管道。两者都能单方向的跨进程通信。 匿名管道(pipe): 必须是父子进程之间,而且子进程只能由父进程fork() 出来的,才能继承父进程的管道句柄,一般mac 开发…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)子线程 WorkerThread的实现 和 线程池ThreadPool的初始化

一、子线程 WorkerThread的实现 (1)工作线程 线程ID:每个线程都有一个唯一的ID,用于标识线程的名字:非必需,主要用于识别线程互斥锁:线程同步条件变量:线程阻塞EventLoop:在每个子…