Когда mouseX > width/2
, тогда blueHueDecrease = 255
и blueHueIncrease
правильно отображаются на [0, 255].
Когда mouseX < width/2
, тогда blueHueDecrease
отображается на [0, 255] и blueHueIncrease = blueHueDecrease
, потому что blueHueDecrease
является нижней границей в
map(mouseX,width/2,width,blueHueDecrease,255,true);
и в этом случае mouseX < width/2
, blueHueIncrease
ограничен нижней границей из-за последнего параметра в map
(true
).
Если выхотите отобразить blueHueDecrease
, когда мышь оставлена, и blueHueIncrease
, когда мышь направлена, тогда вы должны:
var blueHueDecrease = map(mouseX, 0, width/2, 255, 0, true);
var blueHueIncrease = map(mouseX, width/2, width, 0, 255, true);
Если вы хотите ограничить синий цвет до минимума, тогда выНужно использовать другую blueStartingValue
и карту от blueStartingValue
до 255, а не от 0 до blueStartingValue
:
var blueStartingValue = 128;
var blueHueDecrease = map(mouseX, 0, width/2, 255, blueStartingValue, true);
var blueHueIncrease = map(mouseX, width/2, width, blueStartingValue, 255, true);
См. пример, демонстрирующий другое поведение:
var blueStartingValue = 255;
var blueStartingValue3 = 128;
function setup() {
createCanvas(400, 210);
}
function draw() {
var blueHueDecrease = map(mouseX,0,width/2,blueStartingValue,0);
var blueHueIncrease = map(mouseX,width/2,width,blueHueDecrease,255);
var blueHueDecrease2 = map(mouseX,0,width/2,blueStartingValue,0,true);
var blueHueIncrease2 = map(mouseX,width/2,width,blueHueDecrease2,255,true);
var blueHueDecrease3 = map(mouseX, 0, width/2, 255, 0, true);
var blueHueIncrease3 = map(mouseX, width/2, width, 0, 255, true);
var blueHueDecrease4 = map(mouseX, 0, width/2, 255, blueStartingValue3, true);
var blueHueIncrease4 = map(mouseX, width/2, width, blueStartingValue3, 255, true);
background(0);
textSize(25);
fill(0, 0, blueHueDecrease);
rect(10, 10, 40, 40);
fill(0, 0, blueHueIncrease);
rect(60, 10, 40, 40);
fill(255);
text(`map(,,,, false)`, 110, 45);
fill(0, 0, blueHueDecrease2);
rect(10, 60, 40, 40);
fill(0, 0, blueHueIncrease2);
rect(60, 60, 40, 40);
fill(255);
text(`map(,,,, true)`, 110, 95);
fill(0, 0, blueHueDecrease3);
rect(10, 110, 40, 40);
fill(0, 0, blueHueIncrease3);
rect(60, 110, 40, 40);
fill(255);
text(`new approach`, 110, 145);
fill(0, 0, blueHueDecrease4);
rect(10, 160, 40, 40);
fill(0, 0, blueHueIncrease4);
rect(60, 160, 40, 40);
fill(255);
text(`start = ` + str(blueStartingValue3), 110, 195);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.js"></script>