Установка минимального и максимального диапазона в зависимости от размера окна

#processing

#обработка

Вопрос:

 final float MAX_SIZE = 35000;
final float MIN_SIZE = MAX_SIZE/10;
float alienSize;
float alienY;
float alienX;
void draw()
{
    alienX = mouseX;
    alienY = mouseY;
    alienSize = MAX_SIZE*mouseY/height;
}
  

Моя цель — сделать переменную alienSize максимальным размером, когда она (и мышь) находится в нижней части окна, и 1/10 размера, когда она ( и мышь) находится в верхней части окна. До сих пор у меня есть этот код, который работает для максимального размера, но нет предела тому, насколько маленьким может быть инопланетянин. любая помощь, пожалуйста 🙂

Редактировать: я должен передать это, чтобы не было обмана, пожалуйста, как проверка оператора if на размер или что-то еще

Комментарии:

1. Почему наличие if инструкции может быть обманом?

Ответ №1:

Вы могли бы использовать эту map() функцию. map() Функция принимает 5 значений:

  • Входное значение.
  • Минимальное входное значение.
  • Максимальное входное значение.
  • Минимальное выходное значение.
  • Максимальное выходное значение.

Затем он возвращает выходное значение, основанное на относительном положении входного значения, масштабируемое до выходных значений min и max. Например, если вы вызовете map(150, 100, 200, 500, 700) , вы получите обратно значение 600 because 150 находится на полпути между 100 и 200 , поэтому оно определяет, какое значение находится на полпути между 500 и 700 .

Вот пример:

 float minSize = 50;
float maxSize = 100;

void setup(){
  size(500, 100);
}

void draw(){
  float size = map(mouseX, 0, width, minSize, maxSize);

  background(0);
  ellipse(mouseX, height/2, size, size);
}
  

круг масштабирования

Более подробную информацию можно найти в справочнике.