1ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/* 2ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Copyright (C) 2016 The Android Open Source Project 3ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 4ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * you may not use this file except in compliance with the License. 6ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * You may obtain a copy of the License at 7ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 8ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 10ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Unless required by applicable law or agreed to in writing, software 11ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * See the License for the specific language governing permissions and 14ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * limitations under the License. 15ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 16ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 17ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpackage com.android.dialer.common; 18ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 19ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/** Utility class for common math operations */ 20ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpublic class MathUtil { 21ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 22ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** 23ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Interpolates between two integer values based on percentage. 24ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 25ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param begin Begin value 26ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param end End value 27ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param percent Percentage value, between 0 and 1 28ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @return Interpolated result 29ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 30ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public static int lerp(int begin, int end, float percent) { 31ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return (int) (begin * (1 - percent) + end * percent); 32ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 33ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 34ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** 35ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Interpolates between two float values based on percentage. 36ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 37ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param begin Begin value 38ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param end End value 39ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param percent Percentage value, between 0 and 1 40ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @return Interpolated result 41ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 42ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public static float lerp(float begin, float end, float percent) { 43ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return begin * (1 - percent) + end * percent; 44ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 45ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 46ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** 47ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Clamps a value between two bounds inclusively. 48ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 49ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param value Value to be clamped 50ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param min Lower bound 51ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @param max Upper bound 52ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @return Clamped value 53ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 54ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public static float clamp(float value, float min, float max) { 55ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return Math.max(min, Math.min(value, max)); 56ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 57ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian} 58