C# 在几何体上创建等边三角形栅格

C# 在几何体上创建等边三角形栅格,c#,algorithm,path-finding,C#,Algorithm,Path Finding,我需要创建一个适合给定几何体的等边三角形网格 我有一个包含几何体的图像,它可能包括孔或薄路径。我需要创建一个类似于此图像的网格: 圆的直径可变,需要覆盖整个几何体。点不必位于几何体上。您可以将三角形网格视为倾斜的矩形网格 例如,这使您能够将每个圆的状态存储在二维矩阵中,并使用简单的嵌套循环进行处理。当然,您必须将这些逻辑坐标转换为图形的几何图形平面坐标 const double Sin30 = 0.5; static readonly double Cos30 = Math.Cos(30*M

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

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


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

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

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

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);
        ...
    }
}
const double Sin30=0.5;
静态只读双Cos30=Math.Cos(30*Math.PI/180);
对于(int-xllogical=0;xllogical
您可以将三角形网格视为倾斜的矩形网格

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

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);
        ...
    }
}
const double Sin30=0.5;
静态只读双Cos30=Math.Cos(30*Math.PI/180);
对于(int-xllogical=0;xllogical
我假设这是为了创建二维网格工具。如果是,而且是家庭作业,我建议你自己做,因为你会从中得到很多。如果这不是一个啮合问题,我将要说的应该帮助你不管

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

若要更进一步,只需等边,并获得更精确的网格,您必须研究使用三角剖分的各向异性网格自适应(AMA)。这将比上面概述的基本方法困难得多——但很有趣

使用AMA查看2D tet网格生成器。本代码所依据的文件是:


  • 我假设这是为了创建一个二维网格工具。如果是,而且是家庭作业,我建议你自己做,因为你会从中得到很多。如果这不是一个啮合问题,我将要说的应该帮助你不管

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

    若要更进一步,只需等边,并获得更精确的网格,您必须研究使用三角剖分的各向异性网格自适应(AMA)。这将比上面概述的基本方法困难得多——但很有趣

    使用AMA查看2D tet网格生成器。本代码所依据的文件是:


  • 这好像是家庭作业。如果是,应该贴上这样的标签。实际上不是,我这样做是为了好玩。这张照片是从一个网站上拍摄的,该网站讨论如何找到最佳的割草路线,我想通过一个程序来实现这一点。这看起来像是家庭作业。如果是,应该贴上这样的标签。实际上不是,我这样做是为了好玩。这张照片是从一个网站上拍摄的,该网站讨论如何找到最佳的割草路线,我想通过一个程序来实现这一点。