CGAL::2D Arrangements-2

2.3.2 遍历Arrangement Halfedge

Arrangement的一条Halfedge是和一个 X_monotone_curve_2对象绑定,这个curve可以通过e->curve()获取。

e->source()得到源点,e->target()得到目标点,e->twin()得到半边的对边,

 第个半边都有一个关联面(incident face),这个关联面在半边的左边,可以通过e->face()获取到。

e->prev()和e->next(),得到关联的上一条和下一条半边。

下面是遍历一个face的halfedge代码段:

template <typename Arrangement>
void print_ccb(typename Arrangement::Ccb_halfedge_const_circulator circ) {Ccb_halfedge_const_circulator curr = circ;std::cout << "(" << curr->source()->point() << ")";do {typename Arrangement::Halfedge_const_handle he = curr->handle();std::cout << " [" << e->curve() << "] "<< "(" << e->target()->point() << ")";} while (++curr != circ);std::cout << std::endl;
}
2.3.3 遍历Arrangement Face

一个Arrangement_2对象arr始终有一个unbounded face,通过arr.unbounded_face()可以拿到,空的Arrangement_2也有一个unbounded face。

通过f->is_unboudned()可以确定一个face是否有边界,有边界的face有一个outer CCB。

下面是遍历face的代码段:

template <typename Arrangement>
void print_face(typename Arrangement::Face_const_handle f) {// Print the outer boundary.if (f->is_unbounded()) std::cout << "Unbounded face.\n";else {std::cout << "Outer boundary: ";print_ccb(f->outer_ccb());}// Print the boundary of each of the holes.size_t index = 1;for (auto hi = f->holes_begin(); hi != f->holes_end(); ++hi) {std::cout << " Hole #" << index++ << ": ";print_ccb(*hi);}// Print the isolated vertices.index = 1;for (auto iv = f->isolated_vertices_begin();iv != f->isolated_vertices_end(); ++iv){std::cout << " Isolated vertex #" << index++ << ": "<< "(" << iv->point() << ")\n";}
}

遍历整个Arrangement的代码段如下:

void print_arrangement (const Arrangement_2& arr) {// Print the arrangement vertices.std::cout << arr.number_of_vertices() << " vertices:\n";for (auto vit = arr.vertices_begin(); vit != arr.vertices_end(); ++vit) {std::cout << "(" << vit->point() << ")";if (vit->is_isolated()) std::cout << " - Isolated.\n";else std::cout << " - degree " << vit->degree() << std::endl;}// Print the arrangement edges.std::cout << arr.number_of_edges() << " edges:\n";for (auto eit = arr.edges_begin(); eit != arr.edges_end(); ++eit)std::cout << "[" << eit->curve() << "]\n";// Print the arrangement faces.std::cout << arr.number_of_faces() << " faces:\n";for (auto fit = arr.faces_begin(); fit != arr.faces_end(); ++fit)print_face(fit);
}
2.4修改Arrangement
2.5插入一对不相连的x_Monotone Curves

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

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

相关文章

最新的 Ivanti SSRF 零日漏洞正在被大规模利用

Bleeping Computer 网站消息&#xff0c;安全研究员发现 Ivanti Connect Secure 和 Ivanti Policy Secure 服务器端请求伪造 (SSRF) 漏洞&#xff08;CVE-2024-21893 &#xff09;正在被多个威胁攻击者大规模利用。 2024 年 1 月 31 日&#xff0c;Ivanti 首次就网关 SAML 组件…

Java设计模式——策略

前言 策略模式是平时Java开发中常用的一种&#xff0c;虽然已有很多讲解设计模式的文章&#xff0c;但是这里还是写篇文章来从自己理解的角度讲解一下。 使用场景 我们不妨进行场景假设&#xff0c;要对我们的软件进行授权管理&#xff1a;在启动我们的软件之前先要校验是否…

万维网的文档

目录 1 万维网的文档 动态万维网文档 CGI CGI 网关程序 活动万维网文档 用 Java 语言创建活动文档 1 万维网的文档 分为&#xff1a; 静态万维网文档。内容不会改变。简单。(html、xml、css) 动态万维网文档。文档的内容由应用程序动态创建。 活动万维网文档。由浏览器端…

SpringBoot3整合Knife4j

前置&#xff1a; 官网&#xff1a;快速开始 | Knife4j gitee&#xff1a;swagger-bootstrap-ui-demo: knife4j 以及swagger-bootstrap-ui 集成框架示例项目 - Gitee.com 1.依赖引入&#xff1a; ps&#xff1a;json处理需要引入相关包 <dependency><groupId>c…

作业 2.12

封装strlen #include <stdio.h> #include <string.h> int main(int argc, const char *argv[]) { char arr[30]; gets(arr); char *paarr; int i0; int sum0; for(i0;arr[i]!\0;i) { sum; } printf("%d",s…

基于语义解析的知识图谱问答系统

目录 前言1 背景介绍2 语义解析的核心技术2.1 自然语言处理&#xff08;NLP&#xff09;2.2 语义表示学习2.3 实体关系抽取 3 语义解析的基本步骤3.1 短语检测3.2 资源映射3.3 语义组合3.4 逻辑表达式生成 4 处理与知识图谱无关的问句4.1 Bridging技术4.2 确定谓词4.3 Paraphra…

【新书推荐】7.4节 寄存器间接和相对寻址方式

本节内容&#xff1a;当指令操作数为内存操作数&#xff0c;且内存操作数的地址使用指针寄存器表示时&#xff0c;称为寄存器间接寻址方式。 ■寄存器间接寻址方式&#xff1a;在地址表达式中&#xff0c;只能使用BX、SI、DI、BP四个指针寄存器用来寻址。 7.4.1 寄存器间接寻…

猫头虎分享已解决Bug || API限制超额(API Rate Limiting):RateLimitExceeded, APILimitReached

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

mysql入门到精通006-基础篇-多表查询

1、多表关系介绍 1.1 概念 项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求和业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在各种联系&#xff0c;基本上分为3种&#xf…

MongoDB聚合:$unwind

使用$unwind可以对输入文档数组字段进行结构&#xff0c;为每个数组元素输出一个文档&#xff0c;并且每个输出文档都是输入文档数组字段的值。相当于将内嵌的数组文档提升到了顶层。 语法 可以通过字段路径或文档操作符来展开数组字段。 通过字段操作符展开 可以将数组字段…

如何用 docker 部署程序?

如何用 docker 部署程序&#xff1f;这个问题有点笼统。 如果是MySQL、Redis这些&#xff0c;只需要拉取镜像&#xff0c;然后设置必要的配置&#xff0c;最终创建并运行实例即可。 如果你的应用是一个Java应用程序&#xff0c;使用Docker来部署它会涉及到Java特有的一些考虑…

c# Config 配置文件帮助类

public class ConfigHelper { #region 获取指定目录 AppSettings 配置文件值 /// <summary> /// 获取指定目录 AppSettings 配置文件值 /// </summary> /// <param name"key"></param> /// <…

LeetCode.144. 二叉树的前序遍历

题目 144. 二叉树的前序遍历 分析 这道题目是比较基础的题目&#xff0c;我们首先要知道二叉树的前序遍历是什么&#xff1f; 就是【根 左 右】 的顺序&#xff0c;然后利用递归的思想&#xff0c;就可以得到这道题的答案&#xff0c;任何的递归都可以采用 栈 的结构来实现…

片上网络NoC(1)——导论

一、多核时代的出现 自从20世纪90年代末引入多核芯片研究以来&#xff0c;片上网络已经成为一个重要且不断发展的研究领域。随着计算核心数量的不断增加&#xff0c;多核处理器被广泛应用在高端服务器、智能手机&#xff0c;甚至物联网&#xff08;Internet of Things,IoT)网关…

Microsoft Word 清除格式

Microsoft Word 清除格式 References 选择文本&#xff0c;用快捷键 Ctrl Shift N&#xff0c;可以快速清除格式。 选择文本&#xff0c;清除格式。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

System V信号量

1.信号量 信号量本质上就是一把计数器(资源计数器) 表示资源数目的计数器,每一个执行流想访问公共资源内部的某一份资源&#xff0c;不应该让执行流先访问,而是先申请信号量资源,其实就是先对信号量计数器进行–操作,本质上,只要–成功&#xff0c;就完成了对资源的预订机制 如…

leetcode(矩阵)74. 搜索二维矩阵(C++详细解释)DAY7

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中…

Ubuntu编译和测试ITK4.13.1

安装不麻烦&#xff0c;环境配置挺麻烦&#xff0c;主要是gcc、cmake和ccmake的版本不匹配问题。 环境&#xff1a; gcc -- 7.5.0 cmake -- 3.15.2 ccmake -- 3.15.2 参考以下两篇博客安装&#xff1a; 1、 ITK的安装与测试&#xff08;Ubuntu系统&#xff09;_ubuntu20…

Confluence CVE-2023-22527利用工具

介绍 Confluence CVE 2021&#xff0c;2022&#xff0c;2023 利用工具&#xff0c;支持命令执行&#xff0c;哥斯拉&#xff0c;冰蝎 内存马注入 支持 Confluence 版本&#xff1a;CVE-2021-26084&#xff0c;CVE-2022-26134&#xff0c;CVE_2023_22515&#xff0c;CVE-2023-2…

计算机网络——06分组延时、丢失和吞吐量

分组延时、丢失和吞吐量 分组丢失和延时是怎样发生的 在路由器缓冲区的分组队列 分组到达链路的速率超过了链路输出的能力分组等待排到队头、被传输 延时原因&#xff1a; 当当前链路有别的分组进行传输&#xff0c;分组没有到达队首&#xff0c;就会进行排队&#xff0c;从…