在几何上创建等边三角形网格

时间:2012-05-04 15:24:48

标签: c# algorithm path-finding

我需要创建一个适合给定几何的等边三角形网格。

我有一个包含几何图形的图像,它可能包含孔或细路径。我需要创建一个类似于这个图像的网格:

http://neutrinodata.s3.amazonaws.com/theage-education/cmsimages/web/b3c5925e-34de-11e0-99f6-005056b06a0e-4535326.jpg

圆的直径可变,需要覆盖整个几何体。这些点不必在几何上。

2 个答案:

答案 0 :(得分:3)

您可以将三角形网格视为倾斜的矩形网格

enter image description here

这使您可以将每个圆的状态存储在一个二维矩阵中,并使用简单的嵌套循环进行处理。因此,您必须将这些逻辑坐标转换为几何平面坐标以进行绘图。

const double Sin30 = 0.5;
static readonly double Cos30 = Math.Cos(30*Math.PI/180); 

for (int xLogical = 0; xLogical < NX; xLogical++) {
    for (int yLogical = 0; yLogical < NY; yLogical++) {
        double xGeo = GridDistance * xLogical * Cos30;
        double yGeo = GridDistance * (yLogical + xLogical * Sin30);
        ...
    }
}

答案 1 :(得分:0)

我假设这是创建一个2D网格划分工具。如果它是,并且它是功课,我建议你自己做,因为你会得到很多。如果它不是一个网格问题,我将不得不说,无论如何都应该帮助你......

为此,请使用网格节点中心生成等边距。如果你没有开始的中心点,你需要首先选择你的对象的方向,然后创建这些(基于矩形的)网格节点(你必须找到一种方法来测试这些点是否真的躺在你的对象边界内)。然后,您可以使用这些点构造等边三角形。注意。你将再次处理边缘检测以获得一半的准确度。

为了进一步了解等边距,并获得更精确的网格,您将不得不使用三角测量来研究各向异性网格自适应(AMA)。这将比上面概述的基本方法困难得多 - 但很有趣!

使用AMA将此link检出到2D tet-mesh生成器。这段代码所依据的论文是:

  1. V. Dolejsi: Anisotropic mesh adaptation for finite volume and finite element methods on triangular meshes Computing and Visualisation in Science, 1:165-178, 1998.