我需要创建一个适合给定几何的等边三角形网格。
我有一个包含几何图形的图像,它可能包含孔或细路径。我需要创建一个类似于这个图像的网格:
圆的直径可变,需要覆盖整个几何体。这些点不必在几何上。
答案 0 :(得分: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);
...
}
}
答案 1 :(得分:0)
我假设这是创建一个2D网格划分工具。如果它是,并且它是功课,我建议你自己做,因为你会得到很多。如果它不是一个网格问题,我将不得不说,无论如何都应该帮助你......
为此,请使用网格节点中心生成等边距。如果你没有开始的中心点,你需要首先选择你的对象的方向,然后创建这些(基于矩形的)网格节点(你必须找到一种方法来测试这些点是否真的躺在你的对象边界内)。然后,您可以使用这些点构造等边三角形。注意。你将再次处理边缘检测以获得一半的准确度。
为了进一步了解等边距,并获得更精确的网格,您将不得不使用三角测量来研究各向异性网格自适应(AMA)。这将比上面概述的基本方法困难得多 - 但很有趣!
使用AMA将此link检出到2D tet-mesh生成器。这段代码所依据的论文是: