Java Float Number Clamp clampTrigo(float value, float min, float max)

Here you can find the source of clampTrigo(float value, float min, float max)

Description

Clamp the given value to fit between the min and max values according to a trigonometric-like heuristic.

License

Apache License

Parameter

Parameter Description
value a parameter
min a parameter
max a parameter

Return

the clamped value

Declaration

@Deprecated
@SuppressWarnings("checkstyle:all")
public static float clampTrigo(float value, float min, float max) 

Method Source Code

//package com.java2s;
/*//www. j  av a 2 s .c  om
 * $Id$
 * This file is a part of the Arakhne Foundation Classes, http://www.arakhne.org/afc
 *
 * Copyright (c) 2000-2012 Stephane GALLAND.
 * Copyright (c) 2005-10, Multiagent Team, Laboratoire Systemes et Transports,
 *                        Universite de Technologie de Belfort-Montbeliard.
 * Copyright (c) 2013-2016 The original authors, and other authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

public class Main {
    /** Clamp the given value to fit between the min and max values
     * according to a trigonometric-like heuristic.
     * If the given value is not between the minimum and maximum
     * values and the value is positive, the value is modulo the perimeter
     * of the counterclockwise circle.
     * If the given value is not between the minimum and maximum
     * values and the value is negative, the value is modulo the perimeter
     * of the clockwise circle.
     * The perimeter is the distance between {@code min} and {@code max}.
     *
     * @param value
     * @param min
     * @param max
     * @return the clamped value
     * @deprecated since 13.0, see {@link #clampCyclic(double, double, double)}
     */
    @Deprecated
    @SuppressWarnings("checkstyle:all")
    public static float clampTrigo(float value, float min, float max) {
        if (Float.isNaN(max)) { // NaN is lower than all the number according to float.compareTo()
            return Float.NaN;
        }
        if (Float.isNaN(min)) {
            // Clamp max only
            if (value > max)
                return max - Float.MAX_VALUE + value;
        } else {
            assert (min <= max);
            if (min == max)
                return min; // special case: empty interval
            if (value < min || value > max) {
                float perimeter = max - min;
                float nvalue = value - min;
                float rest = nvalue % perimeter;
                return (value < 0) ? max + rest : rest + min;
            }
        }
        return value;
    }
}

Related

  1. clampNumberFromTime(long ms, float seconds)
  2. clampPercentage(float value)
  3. clampRoundByte(float in)
  4. clampToMinusOneToOne(float value)
  5. clampToPositiveNonZero(float value)
  6. clampWithMod(float parFloat, float parMax)
  7. clampYaw(float yaw)
  8. clampYaw(float yaw)
  9. clampZero_float(float value, float max)