[...] так, что шары с самой высокой скоростью (скажем, v) имеют синий цвет, а цвет становится все более красным по мере снижения скорости (промежуточные скорости принимают диапазон цветов радуги) [...]
Прочитайте о цветовой гамме HSL и HSV и напишите метод, который преобразует значение hue в диапазон [0.0, 1.0] вцвет RGB и устанавливает цвет fill()
:
public void SetFillFromHUE(float hue) {
float R = Math.abs(hue * 6.0 - 3.0) - 1.0;
float G = 2.0 - Math.abs(hue * 6.0 - 2.0);
float B = 2.0 - Math.abs(hue * 6.0 - 4.0);
fill(R*255.0, G*255.0, B*255.0);
}
Я исследовал, что значение v
всегда находится в диапазоне [0, 10,0] (из вашего предыдущего вопроса Багги прыгающие шарики .
Итак,
float v = sqrt(pow(this.getDX(),2)+pow(this.getDY(),2)) / 10.0;
даст значение, зависящее от скорости v
в диапазоне [0,0, 1,0].
Расследованиецветовой диапазон оттенок показывает, что 0,0 - красный, а 0,66 - синий.
SetFillFromHUE(v * 2.0/3.0);
устанавливает цвет от красного до желтого, от зеленого до синего.
Окончательный метод display
выглядит следующим образом:
public void display(){
float v = sqrt(pow(this.getDX(),2)+pow(this.getDY(),2)) / 10.0;
stroke(0);
SetFillFromHUE( v * 4.0/6.0 );
ellipse(this.xpos, this.ypos, this.size ,this.size);
}