Ели из семи треугольников
Издалека ель — это силуэт, и для силуэта достаточно семи треугольников. Сложнее сделать так, чтобы лес не выглядел забором.
Каждый ярус — равнобедренный треугольник. Вершины всех ярусов лежат на одной оси, а ширина растёт сверху вниз от четверти до полной ширины основания. Ярусы перекрываются, и в силуэте появляются характерные ступеньки.
for t in range(7):
f = t / 7
y0 = top - h * (1 - f)
y1 = y0 + h * 0.32
hw = base_w * (0.25 + 0.75 * f) * rng.uniform(0.8, 1.1) / 2
draw.polygon([(x, y0), (x - hw, y1), (x + hw, y1)], fill=255)
Случайность нужна в трёх местах: высота дерева, ширина каждого яруса и шаг до следующего дерева. С постоянным шагом получается забор. Со слишком большим разбросом высоты лес похож на расчёску. Для дальнего плана хорошо работает шаг от 6 до 22 пикселей, для ближнего — от 60 до 180.
Деревья ставятся на линию профиля своего слоя и красятся тем же цветом, что и слой, с той же долей дымки. Тогда они не отрываются от земли и не выглядят наклеенными.
Маску деревьев я рисую через ImageDraw в отдельный слой, размываю на 0,8 пикселя и только потом накладываю. Без размытия края треугольников остаются лесенкой, и на увеличении это сразу видно.