From 09de0fd2982e5b0a5adaca28c8ddcfd7e77da91a Mon Sep 17 00:00:00 2001 From: Gael-de-Sailly Date: Wed, 28 Jul 2021 19:31:16 +0200 Subject: [PATCH] Added reference to scientific paper --- README.md | 6 ++++++ terrainlib_lua/rivermapper.lua | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/README.md b/README.md index ca13786..ed8ccea 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ Its main particularity compared to conventional Minetest mapgens is that rivers It used to be composed of a Python script doing pre-generation, and a Lua mod reading the pre-generation output and generating the map. The code has been rewritten in full Lua for version 1.0 (July 2021), and is now usable out-of-the-box as any other Minetest mod. +# Author and license +License: GNU LGPLv3.0 + +Code: Gaël de Sailly +Flow routing algorithm concept (in `terrainlib/rivermapper.lua`): Cordonnier, G., Bovy, B., & Braun, J. (2019). A versatile, linear complexity algorithm for flow routing in topographies with depressions. Earth Surface Dynamics, 7(2), 549-562. + # Requirements Mod dependencies: `default` required, and [`biomegen`](https://github.com/Gael-de-Sailly/biomegen) optional (provides biome system). diff --git a/terrainlib_lua/rivermapper.lua b/terrainlib_lua/rivermapper.lua index f22d85a..c1f13ce 100644 --- a/terrainlib_lua/rivermapper.lua +++ b/terrainlib_lua/rivermapper.lua @@ -1,5 +1,17 @@ -- rivermapper.lua +-- This file provide functions to construct the river tree from an elevation model. +-- Based on a research paper: +-- +-- Cordonnier, G., Bovy, B., and Braun, J.: +-- A versatile, linear complexity algorithm for flow routing in topographies with depressions, +-- Earth Surf. Dynam., 7, 549–562, https://doi.org/10.5194/esurf-7-549-2019, 2019. +-- +-- Big thanks to them for releasing this paper under a free license ! :) + +-- The algorithm here makes use of most of the paper's concepts, including the Planar Boruvka algorithm. +-- Only flow_local and accumulate_flow are custom algorithms. + local function flow_local_semirandom(plist) local sum = 0 for i=1, #plist do