РЕДАКТИРОВАТЬ: Насколько я понимаю, вы хотите умножить внутреннюю часть вашей формы на карту теплопроводности, которая соответствует каждому пикселю.
Я бы порекомендовал:
- Наполните интерьер своей формой.(См. Библиотеки обработки изображений, такие как AForge.NET.)
- Выполните поэлементное умножение его на карту теплопроводности.(См. Числовые библиотеки.)
Результатом является тепловая карта «температуры».Вы можете обрабатывать его дальше по своему усмотрению.
Если вас не волнует скорость, возьмите растеризованный вывод и просто проверьте наличие яркого пикселя:
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);