0

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

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

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

这些圆的直径是可变的,并且需要覆盖整个几何图形。这些点不必在几何图形上。

4

2 回答 2

3

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

在此处输入图像描述

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

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);
        ...
    }
}
于 2012-05-04T15:41:07.917 回答
0

我假设这是创建一个 2D 网格划分工具。如果是这样,而且这是家庭作业,我建议你自己做,因为你会从中受益匪浅。如果这不是啮合问题,无论如何我要说的应该对您有所帮助...

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

要在等边线的基础上走得更远,并获得更准确的网格,您将不得不使用三角剖分研究各向异性网格自适应 (AMA)。这将比上面概述的基本方法困难得多 - 但很有趣!

查看此链接到使用 AMA 的 2D tet-mesh 生成器。此代码所基于的论文是:

  1. V. Dolejsi:三角形网格计算和可视化中有限体积和有限元方法的各向异性网格自适应,1998 年,1:165-178。
于 2012-05-04T15:52:11.480 回答