001    package railo.runtime.img.interpolation;
002    
003    public class Lanczos implements Interpolation
004    {
005        public double f(double x) {
006            if (x < -3.0)
007                return 0.0;
008            if (x < 0.0)
009                return sinc(-x) * sinc(-x / 3.0);
010            if (x < 3.0)
011                return sinc(x) * sinc(x / 3.0);
012            return 0.0;
013        }
014        
015        public double sinc(double x) {
016            x *= 3.141592653589793;
017            if (x != 0.0)
018                return Math.sin(x) / x;
019            return 1.0;
020        }
021        
022        public double getSupport() {
023            return 3.0;
024        }
025    }