c# - 在几何体上创建等边三角形网格

标签 c# algorithm path-finding

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

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

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

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

最佳答案

你可以把三角形网格看成是一个倾斜的矩形网格

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);
        ...
    }
}

关于c# - 在几何体上创建等边三角形网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451740/

相关文章:

c++ - 优先队列堆化

c++ - 用于测试路径查找算法的可能数据集

c# - 没有指定名称字段的编码,任何非 ASCII 字节都将被丢弃

c# - Windows 窗体控件的大小在显示设置更改时更改

algorithm - 在 Connect 4 中检测早期领带

networking - IRC中的最短路径是如何保证的?

graph - pacman 寻路的一些问题

c# - DTO从客户端传输到服务端后变为null

c# - 文件不是项目的一部分或生成操作未设置为 "Resource"

java - Big O中一般Hash表和java的HashMap的区别