ฉันกำลังเขียนเกม Java และฉันต้องการใช้ power meter สำหรับการที่จะถ่ายอะไรซักอย่าง
ฉันจำเป็นต้องเขียนฟังก์ชั่นที่ใช้ int ระหว่าง 0 - 100 และขึ้นอยู่กับว่าตัวเลขนั้นสูงแค่ไหนมันจะคืนค่าสีระหว่างสีเขียว (0 ในระดับพลังงาน) และสีแดง (100 ในระดับพลังงาน)
คล้ายกับการทำงานของตัวควบคุมระดับเสียง:
ฉันต้องดำเนินการอะไรบ้างกับองค์ประกอบสีแดงสีเขียวและสีน้ำเงินเพื่อสร้างสีระหว่างสีเขียวและสีแดง
ดังนั้นฉันสามารถเรียกใช้พูดgetColor(80)
และมันจะกลับสีส้ม (ค่าของมันใน R, G, B) หรือgetColor(10)
ที่จะกลับค่า RGB เขียว / เหลืองมากขึ้น
ฉันรู้ว่าฉันต้องเพิ่มองค์ประกอบของค่า R, G, B สำหรับสีใหม่ แต่ฉันไม่ทราบว่ามีอะไรเพิ่มขึ้นหรือลดลงโดยเฉพาะเมื่อสีเปลี่ยนจากสีเขียว - แดง
ความคืบหน้า:
ฉันลงเอยด้วยการใช้พื้นที่สี HSV / HSB เพราะฉันชอบการไล่สีที่ดีกว่า (ไม่มีสีน้ำตาลเข้มอยู่ตรงกลาง)
ฟังก์ชั่นที่ฉันใช้คือ:
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);
}
โดยที่ "power" คือตัวเลขระหว่าง 0.0 ถึง 1.0 0.0 จะกลับมาเป็นสีแดงสด 1.0 จะกลับมาเป็นสีเขียวสดใส
แผนภูมิ Java Hue: