Mercurial > cgi-bin > hgweb.cgi > SimpleResizer
view app/src/main/java/com/bartsent/simpleresizer/lib/LanczosKernel.kt @ 8:6ae738b8a814 memo
Memoize. Only modest improvement results.
author | David Barts <n5jrn@me.com> |
---|---|
date | Wed, 17 Feb 2021 07:43:50 -0800 |
parents | e8059b166de1 |
children | 678adef4774f |
line wrap: on
line source
package com.bartsent.simpleresizer.lib import kotlin.math.PI import kotlin.math.abs import kotlin.math.sin object LanczosKernel: ScalingKernel { override val size = 3.0 private val memory = HashMap<Double, Double>() init { memory.put(0.0, 1.0) } private fun sinc(x: Double): Double { val remembered = memory.get(x) if (remembered != null) return remembered val pix = PI * x val calculated = sin(pix) / pix memory.put(x, calculated) return calculated } override fun weight(x: Double): Double = if (abs(x) < size) sinc(x) * sinc(x/size) else 0.0 }