3D多面体表面

1 概述

三维多面体表面由顶点、边、面及其上的关联关系组成,基于半边数据结构设计。多面体表面可以看作为一个容器类,它管理顶点、半边、小平面及其入射关系,并保持它们的组合完整性。

一个三维的多面体表面Polyhedron_3<PolyhedronTraits_3> 由顶点V、边E、面F和它们上的入射关系组成。每条边由两个方向相反的半边表示。使用半边存储的关系如下图所示:

  • 按照惯例,从多边形外部看,半边沿逆时针方向围绕面。
  • 自相交不容易有效地被检测到。
  • Polyhedron_3<PolyhedronTraits_3> 仅保持多面体表面的组合完整性(使用欧拉运算),不考虑点的坐标或任何其他几何信息。

很多栗子

第一个简单例子

#include <CGAL/Simple_cartesian.h>
#include <CGAL/Polyhedron_3.h>
typedef CGAL::Simple_cartesian<double>     Kernel;
typedef CGAL::Polyhedron_3<Kernel>         Polyhedron;  //通过使用内核作为特征类
typedef Polyhedron::Halfedge_handle        Halfedge_handle; //半边句柄
int main() {Polyhedron P;Halfedge_handle h = P.make_tetrahedron();   //返回P的任意半边if (P.is_tetrahedron(h))                    //检查h是否属于多面体表面return 0;return 1;
}

顶点迭代器的使用

#include <CGAL/Simple_cartesian.h>
#include <CGAL/Polyhedron_3.h>
#include <iostream>
typedef CGAL::Simple_cartesian<double>     Kernel;
typedef Kernel::Point_3                    Point_3;
typedef CGAL::Polyhedron_3<Kernel>         Polyhedron;
typedef Polyhedron::Vertex_iterator        Vertex_iterator;
int main() {Point_3 p( 1.0, 0.0, 0.0);Point_3 q( 0.0, 1.0, 0.0);Point_3 r( 0.0, 0.0, 1.0);Point_3 s( 0.0, 0.0, 0.0);Polyhedron P;P.make_tetrahedron( p, q, r, s);CGAL::IO::set_ascii_mode( std::cout);for ( Vertex_iterator v = P.vertices_begin(); v != P.vertices_end(); ++v)std::cout << v->point() << std::endl;return 0;
}

我们也可以使用std::copy 和 ostream 迭代器适配器简化for遍历:

std::copy( P.points_begin(), P.points_end(),std::ostream_iterator<Point_3>(std::cout,"\n"));

多面体的绘制

draw_polyhedron.cpp

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/IO/Polyhedron_iostream.h>
#include <CGAL/draw_polyhedron.h>
#include <fstream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel  Kernel;
typedef CGAL::Polyhedron_3<Kernel>                       Polyhedron;
int main(int argc, char* argv[])
{Polyhedron P;std::ifstream in1((argc>1)?argv[1]:CGAL::data_file_path("meshes/cross_quad.off"));in1 >> P;CGAL::draw(P);return EXIT_SUCCESS;
}

【CGAL_多面体】3D多面体表面相关推荐

  1. CAD随机多面体3D 多面体骨料 凸多面体颗粒

    插件简介 CAD随机多面体3D插件可用于在AutoCAD软件内生成三维随机多面体模型,实现三维多面体的随机分布,同时可生成与多面体相适配的长方体带孔洞基体. 应用范围 插件生成的随机分布多面体模型可导 ...

  2. CGAL笔记之单元格复合体和多面体篇——多面体的 3D Minkowski 和

    CGAL笔记之单元格复合体和多面体篇--多面体的 3D 闵可夫斯基和 介绍 分解法 特性和约束 用法 介绍 如下图,勺子和星星的 Minkowski 和. 分解法 计算非凸多面体闵可夫斯基和的分解方法 ...

  3. Abaqus 三维多面体骨料 随机多面体3D 无干涉多面体骨料模型

    在三维混凝土细观模型的构建过程中,为了简化建模及模拟过程多采用二维模型,如采用圆形或多边形来近似取代混凝土内的粗骨料,部分学者采用的三维模型较多是把骨料简化为球形来进行建模,而在混凝土中,骨料多为不规 ...

  4. 优秀课程案例:使用Scratch绘制3D多面体!

    ,点击上面微信号关注我关注我哟每天坚持推送文章,争取做到日更,喜欢的可以设置星标,并分享点赞我们的文章,非常感谢大家的支持,您的点击的在看就是我们的动力! 阅读量越来越低了,但是我依旧坚持分享,许多案 ...

  5. CGAL笔记之单元格复合体和多面体篇——多面体凸分解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 CGAL笔记之单元格复合体和多面体篇--多面体凸分解 1 介绍 2 接口使用 1 介绍 对于非凸多面体的许多应用,有一个有效的解决方案 ...

  6. 「过拟合」也能废物利用了:有人用它高清重建3D物体表面,参数减少99%

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 听到过拟合三个字,大部分机器学习研究者都会如临大敌. 毕竟没有人会希望自家模型崽崽,脱离了题集范围就不会考试了. 但现在,多伦多大学和麦吉尔 ...

  7. 从多变形面积到多面体体积:鞋带公式的3D版本

    怎样根据多边形顶点坐标计算多边形面积,以及3D情况下怎样根据多面体的顶点坐标计算多面体的体积? 多边形的面积计算方法中,有一条像变戏法一样的计算方式:鞋带定理,可以直接根据多边形的各个顶点坐标得到多变 ...

  8. CGAL 4.11 官方文档 软件包概述 ——胞腔复形与多面体类

    原文链接:https://doc.cgal.org/latest/Manual/packages.html 译文首发:http://blog.csdn.net/duzixi Cell Complexe ...

  9. COMSOL随机多面体骨料 三维凸多面体骨料 无规则孔隙 三维混凝土细观 三维骨料模型

    混凝土模型 三维混凝土细观模型的建立是进行混凝土性能模拟的有效方法,而在comsol建模过程中随机凸多面体骨料的生成是几何模型的难点.这里提供一种快速高效的三维凸多面体骨料建模的方案,以实现不同集配的 ...

  10. 超平面、半空间、多面体的辨析

    超平面 超平面是具有以下形式的集合:,其中.即超平面是非平凡的线性方程的解空间,超平面是一个仿射集合. 中由法向量和超平面上一点确定的超平面.对于超平面上任意一点(如深色箭头所示)都垂直于. 半空间 ...

最新文章

  1. 如何定制一款12306抢票浏览器——处理预订页面和验证码自动识别功能
  2. 从零开始学习python-如何从零开始学python?
  3. hibernate中的 bag
  4. 计算机视觉和图像分类,图像分类 - 计算机视觉 - Azure Cognitive Services | Microsoft Docs...
  5. 数据即代码:元驱动编程
  6. sketchup生成面域插件_独家教程 | 快速抓取“高精准”场地信息,康石石教你生成不同“体量”地形...
  7. PowerShell在SharePoint 2010自动化部署中的应用(1)--代码获取
  8. windows10 64位 JDK1.8 下载
  9. 期末复习-选择题整理(湖南大学操作系统课程雨课堂答案即期末题库)
  10. 计算机毕业设计题目汇总 - 简单的毕设选题
  11. 白天黑夜、中午和傍晚的固定配色绘画技巧
  12. Team:Syclover Author:L3m0n Email:iamstudy@126.com
  13. 管理经济学 知识点总结(一)
  14. win10三国志14已停止工作解决方法--win10专业版
  15. java多态app_【Java基础】Java中的多态
  16. Docker Desktop删除镜像后磁盘空间未减少
  17. linux 无线网卡
  18. arduino uno模拟遥控器控制无刷电机
  19. 计算机多用户间软件共享文件,计算机文件共享有什么好处
  20. 【解决】快速启动栏消失了

热门文章

  1. Linux运维——高级指令
  2. python ——找出 每行中长度超过3的单词
  3. vscode环境搭建:配置prettier
  4. 增值税税控设备(计算机打印机)全额抵扣,一般纳税人税控专用设备和技术费用抵减税额会计处理...
  5. 充电识别过程及QC2.0
  6. itest考试切屏能检测出来吗_itest测试
  7. Halcon 毛刺检测
  8. Win10任务栏卡死,无响应,一直转圈,点不动
  9. 使用netwox实现tcp rst 攻击及防御措施
  10. 超微服务器双路主板系列,超微发布X12DPL系列服务器主板 支持双路10nm Ice Lake至强处理器...