对给定的凸多边形区域生成三角形网格。
输入条件:二维凸多边形区域
实际输入:围成此区域的边界点集
输出结果:此区域的三角形网格
实际输出:网格数据
网格要求: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;
}
分享到:
相关推荐
算法的project,凸多边形三角划分。 代码c++编写 ,vc6编译。有mfc的画图,也是vc6. 有详细的文档报告。
一个正凸N边形,可以用N-3条互不相交的对角线将正N边形分成N-2个三角形。 现在要求读入N边形的N(N≤20),输出不同划分方法的总数(要求解的是划分方法数,而不需要输出各种划分法)。
该文根据不适合多边形的概念,通过给定的平移规则控制平移多边形中心的移动方向和位移量而计算出两凸多边形的不适合多边形,进而提出了一种新的凸多边形不干涉算法。最后用实例说明了它在布局求解中的应用。文中方法...
本程序主要是判断点与多边形间的关系,在多边形内还是在多边形外。
计算坐标点是否在给定坐标点阵所围成的多边形内(不论凸多边形或凹多边形),编写语言为plsql。纯sql,不依赖第三方库。
给定一个具有 N 个顶点的凸多边形,将顶点从 1 至 N 标号,每个顶点的权值都是一个正整数。 将这个凸多边形划分成 N−2个互不相交的三角形,对于每个三角形,其三个顶点的权值相乘都可得到一个权值乘积,试求...
多边形质心返回给定凸多边形的质心。安装npm i polygon-centroid --save 用法centroid(points)返回点{x,y},它是给定点集(凸多边形)的重心。例子 var centroid = require ( 'polygon-centroid' ) ;var center = ...
在平面直角坐标系中,给定一个点序列,判断这些点是否能够构成凸多边形,并且按照顺时针方向输出这些点。
判断一个坐标点是否在多边形区域范围内。可直接使用。 用来做地图经纬度 判断一个点是否在一个多边形范围内很合适 代码简洁 不到100行代码
给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权函数w。要求确定该凸多边形的三角剖分,使得即该三角剖分中诸三角形上权之和为最小。 算法课作业,我使用Matlab实现的。
PFColorHash - 根据给定的字符串生成颜色
基础的方法有以下几点:在给定的中心点上生成网格点对每个网格点,使用Mapbox Directions API(该方法提供了给定位置之间的道路行驶距离的接口)来计
计算多边形面积C#简洁代码,不论凸凹多边形.
本代码使用fortran语言基于面积法来判定给定的点是否在三角形内,而且是判定N个给定的点是否在M个三角形网格中,而且输出在那个网格中
C#版的多边形拓扑结构算法,给定顶点及连接顶点的弧段信息,计算弧段-点关系表、多边形-弧段关系表。并且计算出各个多边形的面积,代码增加了对孤岛多边形的算法。
它从给定的 3D 顶点或深度图创建结构化网格,并使用相同的技术来调整网格大小。 代码被大量注释,因此您将能够在代码中找到所有实现细节。 描述: 此函数从有序顶点创建结构化网格。 它对于处理深度图并将它们视...
给出了一个快速计算线段与三角形网格曲面指定距离点对的方法。该算法首先对线段和三角形网格曲面...最后,采用线段与三角片的给定距离点对计算方法得到线段与三角形网格曲面的指定距离点对。给出的实例说明该算法有效。
1. 判断多边形是否简单多边形 8 2. 检查多边形顶点的凸凹性 9 3. 判断多边形是否凸多边形 9 ...14.求肯定在给定多边形内的一个点 17 15.求从多边形外一点出发到该多边形的切线 18 16.判断多边形的核是否存在 19
㈢ 多边形常用算法模块 1. 判断多边形是否简单多边形 8 2. 检查多边形顶点的凸凹性 9 ...14.求肯定在给定多边形内的一个点 17 15.求从多边形外一点出发到该多边形的切线 18 16.判断多边形的核是否存在 19
给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径,使该路径经过的数字总和最大。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 编程任务: 对于给定的由n 行数字组成...