view pkg/common/delta.go @ 5703:d2ccf6bb6940 sr-v2

Make plane eval for z-values of triangles numerial more robust.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 19 Feb 2024 17:48:13 +0100
parents 3bc15e38c7e8
children
line wrap: on
line source

// This is Free Software under GNU Affero General Public License v >= 3.0
// without warranty, see README.md and license for details.
//
// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// Copyright (C) 2024 by via donau
//   – Österreichische Wasserstraßen-Gesellschaft mbH
// Software engineering by Intevation GmbH
//
// Author(s):
//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>

package common

// Delta returns a function which returns its argument when called
// the first time and the delta to the last call afterwards.
func Delta() func(int64) int64 {
	var last int64
	return func(x int64) (y int64) {
		y = x - last
		last = x
		return
	}
}

// InvDelta is the inverse function to Delta. A sequence of numbers
// fed into the function generated by InvDelta restores
// the values fed into the function generated by Delta.
func InvDelta() func(int64) int64 {
	var last int64
	return func(x int64) (y int64) {
		y = x + last
		last = y
		return
	}
}