`
guoyiqi
  • 浏览: 1001908 次
社区版块
存档分类
最新评论

对给定的凸多边形区域生成三角形网格

 
阅读更多

对给定的凸多边形区域生成三角形网格。
输入条件:二维凸多边形区域
实际输入:围成此区域的边界点集
输出结果:此区域的三角形网格
实际输出:网格数据
网格要求:1 任意三角形的任意边长≤1.0;
2 网格节点数目尽量少。

1、网格区域输入格式
2、网格初始化
3、网格单元的细分
4、三角形的优化
5、边界处理
6、数据结构
7、网格输出格式

三角形和节点关系定理:对于任意n个节点,如果边界上的节点数为k,(满足k<n),那么任意三角形剖分必然由2n-2-k个三角形组成。
数据结构

1)网格节点
struct Node
{
double X,Y;
}
2)三角形单元
struct Triangle
{
Node *n1, *n2, *n3;
Triangle *t1, *t2, *t3;
}

int check(triangle x){
 double max = dis(x.a,x.b),
     mid = dis(x.a,x.c),
     min = dis(x.b,x.c),
     t,A;
 int mp = 3;
 if ((max<=1.0)&&(mid<=1.0)&&(min<=1.0))
  return 0;
 if (max<mid){ t=max;max=mid;mid=t;mp = 2; }
 if (max<min){ t=max;max=min;min=t;mp = 1; }
 if (mid<min){ t=mid;mid=min;min=t; }
 A = acos((mid*mid+min*min-max*max)/(2*mid*min));
 if (A<PI/2)
  return 1;
 return 1+mp;
}
double dis(point x,point y){
 return sqrt((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y));
}

int cmp(point x,point y){
    if (x.x<y.x)
       return 1;
    if (x.x>y.x)
       return -1;
    if (x.y>y.y)
       return 1;
    if (x.y<y.y)
       return -1;
    return 0;
}

分享到:
评论

相关推荐

    三角形网格剖分程序,可以把任意平面区域剖分成三角形网格

    三角形网格剖分(Triangulation)是一种将任意多边形或平面区域划分成一系列非重叠三角形的方法。这种方法在计算机图形学、计算几何学、有限元分析等多个领域都有广泛应用。 ### 二、三角形网格剖分的应用场景 1. ...

    凸多边形三角划分

    在报告中,作者可能会详细解释耳朵剪裁算法的工作原理,包括如何判断一个顶点是否为“耳朵”,如何确保生成的三角形不重叠,以及如何处理特殊情况,比如多边形有三个相邻的直角等。 `DrawPicture`文件可能是一个MFC...

    点数据外包凸多边形三角化

    点数据外包凸多边形三角化是一种在计算机图形学和地理信息系统中常见的几何处理技术,主要目的是将一组无序的二维点集转化为一系列互不相交的三角形,形成一个覆盖这些点的连通区域。这个过程也被称为Delaunay三角...

    多边形自动拓扑生成.rar

    在给定的“多边形自动拓扑生成.rar”压缩包中,我们很可能是得到了一个基于VC++6.0的算法实现,用于解决这个问题。 首先,我们要理解什么是多边形拓扑。在3D建模中,多边形是基本的构建单元,它们通过共享边和顶点...

    Matlab生成Voronoi图代码

    Voronoi图是一种在几何学和计算几何中广泛使用的图形,它将空间分割成一系列的区域,使得每个区域内任意一点到其对应生成点的距离都比到其他任何生成点的距离更近。在Matlab中,我们可以利用Delaunay三角化方法来...

    判断点是否在给定三角形内的matlab程序

    - Delaunay插值是一种用于构建多边形网格的方法,它能够基于一组点自动构建出一个三角网,使得任意一个三角形内部都不包含其他点。 - 这种方法常用于地理信息系统(GIS)、地形建模等领域。 - 通过构建Delaunay...

    计算机图形学基础:第八讲 网格(Mesh)细分与网格简化

    网格化(Mesh Tessellation)是指将多边形分割成更易于处理的图元,例如凸多边形、三角形或四边形等。网格化在三维网格处理中有重要应用。 网格简化的概念是指用一些相对简单但维持几何特征的表示来近似一个给定的...

    网格布尔运算

    2. **交集**:找出两个网格对象共有的空间区域,生成的新的网格仅包含这两者重叠的部分。 3. **差集**:从一个网格对象中减去另一个,得到的结果是第一个对象中不被第二个对象覆盖的部分。 这些运算对于创建复杂的...

    顶顶————————非结构化网格

    5. **网格验证**:对生成的网格进行检查,确保满足所有预设标准,包括分辨率、平滑度等。 #### 四、网格敏感性研究的重要性 网格敏感性研究是指通过改变网格大小、形状或类型来评估其对计算结果的影响。这种研究...

    基于gis网格模型的洪水分析方法

    - **任意多边形网格模型**:与三角形网格相比,这种方法允许使用更复杂的多边形来适应不同的地形特征。这种方法在处理复杂的地形时更加灵活,可以更准确地模拟洪水的动态变化。 ##### 3. 应用场景 - **洪水风险...

    一种适于网格生成环境的有效数据结构.pdf

    网格生成是计算机图形学与几何建模中的一个重要领域,它主要涉及到将连续几何图形离散化成一系列的基本单元,如三角形、四边形或多边形,以便于计算机处理和分析。在网格生成环境下,合适的数据结构对于提高算法性能...

    三角网格化

    - **形状优化**:Delaunay三角网的构造确保了三角形之间的形状尽可能地接近最优状态,即任意两个相邻三角形形成的凸四边形如果可以通过交换对角线来重构,那么新的结构中的最小角度不会增大。 - **构网唯一性**:...

    人教版(五四制)七年级数学下册 第17章 三角形 单元检测试题 .docx

    - 通过给定的对角线条数计算多边形的边数。 17. **等腰三角形的周长计算**: - 给定等腰三角形两边的长度,计算其周长。 18. **多边形分割为三角形的数量**: - 不同条件下分割多边形为三角形的数量。 19. **...

    计算机图形学基础:第八讲 网格(Mesh)细分与网格简化.pdf

    网格细分有多种方法,如二维网格化、多边形分割、凸多边形、四边形、triangulation等。 网格简化是指将网格简化成更简单的形式,以减少模型的复杂度和存储或传输的规模。网格简化有多种方法,如采样、自适应细分、...

    C 代码 显示三角测量和网格.rar

    代码文件“showme.c”很可能是实现三角测量算法的主要部分,可能包含了对多边形边界的处理、邻接关系的维护以及生成三角形网格的逻辑。 接下来,"showme_test.c"可能是一个测试驱动程序,用于验证“showme.c”中的...

    基于三角形的3d图片渲染

    1. **模型构建**:根据几何描述(如顶点坐标、法线向量、纹理坐标)构建3D模型的三角形网格。对于给定的物体,比如长方体,通过六个矩形面切割成合适的三角形;圆柱体则沿着高度方向切分,并对底面和侧面进行三角化...

    人教版(五四制)七年级数学下册 第17章 三角形 单元检测试题 -.docx

    - **证明**:通过给定的条件证明一个三角形为等边三角形。 #### 23. 多边形的边数和内角和的计算 - **定义**:多边形的边数与内角和之间的关系。 - **计算**:根据边数比和内角和比,计算出两个多边形的具体边数。 ...

    C 代码 计算点网格 在 2D 三角形的内部.rar

    本资源" C 代码 计算点网格 在 2D 三角形的内部.rar "提供了用C语言实现的源码,帮助用户判断2D平面上的点是否位于一个给定三角形的内部。这对于图形学、游戏开发、物理模拟等领域非常有用。 首先,让我们理解2D...

    oose 方法的第四个项目:泰森多边形(Voronoi diagram)

    Delaunay三角网是泰森多边形的对偶图,其中每个顶点都是泰森多边形的一个种子点,而每个三角形内部则对应泰森多边形的一个区域。构建Delaunay三角网的一种常见算法是基于Flip的三角剖分算法,如Constrained Delaunay...

Global site tag (gtag.js) - Google Analytics