Bir Java oyunu yazıyorum ve bir şey çekmenin ne kadar zor olacağına dair bir güç ölçer uygulamak istiyorum.
0 - 100 arasında bir int alan bir işlev yazmam gerekir ve bu sayının ne kadar yüksek olduğuna bağlı olarak, Yeşil (güç ölçeğinde 0) ve Kırmızı (güç ölçeğinde 100) arasında bir renk döndürür.
Ses düzeyi denetimlerinin çalışma şekline benzer:
Yeşil ve Kırmızı arasındaki renkleri oluşturmak için bir rengin Kırmızı, Yeşil ve Mavi bileşenleri üzerinde ne yapmam gerekir?
Yani, söyleyebilirim getColor(80)
ve orangri bir renk (R, G, B'deki değerleri) veya getColor(10)
daha fazla Yeşil / Sarı RGB değeri döndürür.
Yeni bir renk için R, G, B değerlerinin bileşenlerini artırmam gerektiğini biliyorum, ancak renkler Yeşil-Kırmızı'dan değiştikçe neyin yukarı veya aşağı gittiğini bilmiyorum.
İlerleme:
HSV / HSB renk alanını kullandım, çünkü gradyanı daha iyi sevdim (ortada koyu kahverengim yok).
Kullandığım işlev:
public Color getColor(double power)
{
double H = power * 0.4; // Hue (note 0.4 = Green, see huge chart below)
double S = 0.9; // Saturation
double B = 0.9; // Brightness
return Color.getHSBColor((float)H, (float)S, (float)B);
}
Burada "güç", 0.0 ile 1.0 arasında bir sayıdır. 0.0 parlak kırmızı, 1.0 parlak yeşil döndürür.
Java Ton Tablosu: