ColorInterpolator.java
package org.opentrafficsim.draw;
import java.awt.Color;
/**
* Interpolate between two color values.
* <p>
* Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
* BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
* </p>
* @author <a href="https://tudelft.nl/staff/p.knoppers-1">Peter Knoppers</a>
*/
public final class ColorInterpolator
{
/** Static use only; this class cannot be instantiated. */
private ColorInterpolator()
{
// Cannot be instantiated
}
/**
* Generate a Color that is interpolated between two given Color values. Interpolation is simply done per channel (R, G, B).
* @param zero Color; the color that corresponds to ratio == 0
* @param one Color; the color that corresponds to ratio == 1
* @param ratio double; the ratio (should be between 0 and 1)
* @return Color; the interpolated color
*/
public static Color interpolateColor(final Color zero, final Color one, final double ratio)
{
if (ratio < 0 || ratio > 1)
{
throw new RuntimeException("Bad ratio (should be between 0 and 1; got " + ratio + ")");
}
double complement = 1 - ratio;
return new Color((int) (zero.getRed() * complement + one.getRed() * ratio),
(int) (zero.getGreen() * complement + one.getGreen() * ratio),
(int) (zero.getBlue() * complement + one.getBlue() * ratio));
}
}