Разве это не то, что вы получаете с помощью алгоритма водосбора с 4 соседями, плюс отметка всех ребер, которые являются локальными экстремумами, вдоль линии, перпендикулярной направлению самого быстрого подъема? (Конечно, нужно было бы добавить затенение, но не даст ли это положение вершин и углов крыши?)