SORU
4 Aralık 2008, PERŞEMBE


Bir güç ölçer kırmızı ve yeşil arasında bir renk oluşturur?

Java bir oyun yazıyorum ve bir şey vurmak için gidiyoruz ne için bir güç ölçer uygulamak istiyorum.

Ben bir işlev yazın alır bir int arasında 0 - 100, ve dayalı ne kadar yüksek ise, o-ecek dönmek bir renk arasında Yeşil (0 power on ölçek) ve Kırmızı (100 güç ölçeği).

Ses kontrolleri nasıl çalıştığını benzer:
alt text

Operasyonu ben Yeşil ve Kırmızı arasındaki renkleri oluşturmak için bir renk Kırmızı, Yeşil ve Mavi bileşenleri hakkında ne yapmam gerekiyor?

Öyleyse, benim çalıştırmak demek, getColor(80) ve geri dönecektir bir orangish renk değerleri R, G, B) veya getColor(10) dönecektir daha fazla Yeşil/Sarı rgb değeri.

R bileşenleri artırmak istiyorum biliyorum, G, B yeni bir renk için değer, ama yukarı veya aşağı Yeşil-Kırmızı renkleri shift olarak gidiyor özellikle bilmiyorum.


İlerleme:

Yukarı gradiant daha çok seviyordum çünkü renk alanı HSB/HSV (ortada koyu kahverengi) ile sona erdi.

Kullandığım fonksiyon (java):

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);
}

"Güç" 0.0 ve 1.0 arasında bir sayıdır. 0.0 parlak bir kırmızı, 1.0 parlak yeşile döner.

Renk Grafik Java:
alt text

CEVAP
4 Aralık 2008, PERŞEMBE


Bu çalışması gerekir - sadece doğrusal olarak kırmızı ve yeşil değerleri ölçek. Max kırmızı/yeşil/mavi değeri 255 n olduğunu varsayarsak 5 ** aralığındadır

R = (255 * n) / 100
G = (255 * (100 - n)) / 100 
B = 0

(Tamsayı matematik, Ferrucio için şapka ucu için değiştirilmiş)

Başka bir yolu 120 degrees (yeşil) sana uygun ne için ** 9, ve döngüsü 0 degrees (kırmızı) renk kullanımı olacaktır. Bu daha hoş bir degrade verin.

Burada her tekniği gösterimi - üst degrade HSV, RGB, alt kullanır:

http://i38.tinypic.com/29o0q4k.jpg

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DominicFear

    DominicFear

    30 Kasım 2006
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Showtime

    Showtime

    21 HAZİRAN 2006