/*******************************************************************************
* Copyright (c) 2012-2015 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.util;
import static java.lang.Math.pow;
/**
* Provides utility methods that helps math computations.
*
* @author Vlad Zhukovskiy
*/
public final class MathUtils {
/**
* A Bézier curve is a parametric curve frequently used in computer graphics and related fields.
* In vector graphics, Bézier curves are used to model smooth curves that can be scaled indefinitely.
* <p/>
* Four points x1, x2, x3 and x4 in the plane or in higher-dimensional space define a cubic Bézier curve.
* The curve starts at x1 going toward x2 and arrives at x4 coming from the direction of x3.
* Usually, it will not pass through x2 or x3; these points are only there to provide directional information.
* The distance between x1 and x2 determines "how far" and "how fast" the curve moves towards x2 before turning towards x3.
* <p/>
* https://en.wikipedia.org/wiki/B%C3%A9zier_curve
*
* @param t
* should be between 0.0 and 1.0
* @param x1
* coordinate for the x1
* @param x2
* coordinate for the x2
* @param x3
* coordinate for the x3
* @param x4
* coordinate for the x4
* @return coordinate for the point
*/
public static double getCubicBezier(double t, double x1, double x2, double x3, double x4) {
return pow((1. - t), 3.) * x1 + 3. * pow((1. - t), 2.) * t * x2 + 3. * (1. - t) * pow(t, 2.) * x3 + pow(t, 3.) * x4;
}
private MathUtils() {
}
}