001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019/*
020*
021
022Licensed under the Apache License, Version 2.0 (the "License");
023you may not use this file except in compliance with the License.
024You may obtain a copy of the License at
025
026   http://www.apache.org/licenses/LICENSE-2.0
027
028Unless required by applicable law or agreed to in writing, software
029distributed under the License is distributed on an "AS IS" BASIS,
030WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
031See the License for the specific language governing permissions and
032limitations under the License.
033*/
034
035package lucee.runtime.img.math;
036
037public class MathFunction1D implements Function1D {
038
039        public final static int SIN = 1;
040        public final static int COS = 2;
041        public final static int TAN = 3;
042        public final static int SQRT = 4;
043        public final static int ASIN = -1;
044        public final static int ACOS = -2;
045        public final static int ATAN = -3;
046        public final static int SQR = -4;
047
048        private int operation;
049        
050        public MathFunction1D(int operation) {
051                this.operation = operation;
052        }
053        
054        public float evaluate(float v) {
055                switch (operation) {
056                case SIN:
057                        return (float)Math.sin(v);
058                case COS:
059                        return (float)Math.cos(v);
060                case TAN:
061                        return (float)Math.tan(v);
062                case SQRT:
063                        return (float)Math.sqrt(v);
064                case ASIN:
065                        return (float)Math.asin(v);
066                case ACOS:
067                        return (float)Math.acos(v);
068                case ATAN:
069                        return (float)Math.atan(v);
070                case SQR:
071                        return v*v;
072                }
073                return v;
074        }
075}
076