我正在创建一个应用程序,为此,我必须找到任何freeshape
的坐标。
我已尝试实现该功能,但无法识别所有坐标。
我在array
中有形状边界的坐标值。
就像有任何形状一样,那么我该如何找出其中的所有坐标并将它们放在list<Point>
中。
答案 0 :(得分:1)
编辑:据我了解,您希望将形状的内部乘以与每个像素相对应的导热系数图。
我建议:
结果是“温度”的热图。您可以根据需要进行进一步处理。
如果您不关心速度,请获取光栅化的输出,然后只需检查是否存在亮像素:
var img = /* some 2D array */;
var list = new List<Tuple<int, int>>();
foreach ((var row, var j) in img.Select((x, i) => Tuple.Create(x, i))) {
foreach ((var pixel, var i) in row.Select((x, i) => Tuple.Create(x, i))) {
if (pixel == 255) {
list.Add(Tuple.Create(i, j));
}
}
}
也许是LINQ版本:
img
.Select((r, j) => new {row = r, j = j})
.Select((t, j) => t.row
.Select((p, i) => new {p = p, i = i, j = j})
.Where(t => t.p == 255)
.Select(t => Tuple.Create(t.i, t.j)))
.SelectMany(x => x);