Я думаю, что самый простой способ сделать это не в 3D, а просто использовать базовые изометрические методы и перекрасить.
Возьмите свою карту, масштабируйте ее до половины высоты, чтобы предложить перспективу, и нарисуйте ее на холсте.
Теперь создайте пустое прозрачное растровое изображение размером с оригинальную карту и поместите бледно-розовые круги с данными, как будто на карте. Масштабируйте это растровое изображение до половины высоты и нарисуйте его поверх исходной карты.
После этого создайте еще один, но сделайте ваши круги на 1 пиксель меньше в радиусе и измените цвет еще на один оттенок в сторону темно-красного. Снова увеличьте его до половины высоты и нарисуйте поверх существующей композиции, но на один пиксель выше в направлении y. Продолжайте повторять этот шаг до тех пор, пока самый большой круг на вашей карте не достигнет радиуса 0, чтобы нарисовать самый высокий пик.
Я думаю, что это должно создать что-то очень похожее на карту в примере, без необходимости сложной трехмерной геометрии.
Визуально это будет напоминать карту ВРЕМЕНИ еще больше, когда:
- Вы используете обратную экспоненциальную формулу, чтобы уменьшить размер кругов на каждом шаге. В предлагаемом алгоритме шипы будут довольно скучными (конусообразными) и не будут очень высокими.
- Вы используете контур исходной карты в качестве маски прозрачности, чтобы ограничить каждый слой данных. Сделайте это до масштабирования до половины высоты. Это ограничивает выбросы данных в соответствии с формой карты и предотвращает их перетекание через границы в море.
Конечно, этот алгоритм можно оптимизировать, рисуя слои данных на половине высоты, уже используя эллипсы, и рисуя их прямо на карте. Тем не менее, способ окружности / слоя лучше иллюстрирует базовую технику и облегчает выполнение этапа ограничения контура.