私が2つの色を与えられたとしましょう。
public final static Color FAR = new Color(237, 237, 30);
public final static Color CLOSE = new Color(58, 237, 221);
暗い色に浸ることなく、ある色から次の色に移行するにはどうすればよいですか?
などのアイデアが出てきました。
double ratio = diff / range; // goes from 1 to 0
int red = (int)Math.abs((ratio * FAR.getRed()) - ((1 - ratio) * CLOSE.getRed()));
int green = (int)Math.abs((ratio * FAR.getGreen()) - ((1 - ratio) * CLOSE.getGreen()));
int blue = (int)Math.abs((ratio * FAR.getBlue()) - ((1 - ratio) * CLOSE.getBlue()));
また
double ratio = diff / range; // goes from 1 to 0
int red = (int) ((1 - (diff / range)) * FAR.getRed() + CLOSE.getRed() - FAR.getRed());
int green = (int) ((1 - (diff / range)) * FAR.getGreen() + CLOSE.getGreen() - FAR.getGreen());
int blue = (int) ((1 - (diff / range)) * FAR.getBlue() + CLOSE.getBlue() - FAR.getBlue());
しかし残念ながら、ある色から次の色にスムーズに移行するものはありません。色を明るく保ち、暗い色に浸らないようにする方法、またはグラデーションの移行が最初は遅く、次に速く、次に遅くするのではなく、スムーズにする方法を知っている人はいますか?
私は本当に式を思いつくことができません。