Если вы хотите, чтобы ваш чертеж в масштабе с окном, вы будете должны основывать все свои координаты прочь от width
и height
переменных.
Например, предположим, что я рисую 200x200
круг внутри 200x200
окна:
size(200, 200);
ellipse(100, 100, 200, 200);
Если я затем изменить размер окна, чтобы 400x400
, то я должен изменить параметры Я переходя в ellipse()
функции:
size(400, 400);
ellipse(200, 200, 400, 400);
Это может быть раздражает (как вы испытываете), так что лучше просто основывают свои параметры от width
и height
переменных. Таким образом, всякий раз, когда изменяется размер вашего окна, обработка выполняет расчет для вас и чертеж, масштабированный с помощью вашего окна.
size(600, 600);
ellipse(width/2, height/2, width, height);
Это всего лишь пример, но этот процесс для вас будет то же самое: пройти и изменить любое значение, чтобы быть построен на width
и height
переменных вместо жестко закодированных чисел.
Более подробную информацию можно найти здесь: Using Variables - HappyCoding.io
(полное раскрытие: я написал, что учебник, но я думаю, что это объясняет то, что вы спрашиваете о)
Edit: Вы спросили о , поэтому я объясню это ниже. Но если вы пытаетесь установить размер вашего чертежа с размера своего окна, вы должны использовать вышеуказанный подход! Но поскольку это домашнее задание, вы ограничены тем, что делаете это так, как говорит учитель. Так или иначе ...
Давайте посмотрим на простой программе:
size(100, 100);
ellipse(50, 50, 10, 10);
Этот код просто создает окно с 100x100
размера, а затем рисует маленький эллипс в центре:
![small circle](https://i.stack.imgur.com/1aiUR.png)
If мы хотели сделать круг большим, мы могли бы использовать функцию scale()
.Вы можете думать о функции scale()
как автоматически умножая каждый параметр, который вы передаете на функцию рисования (например, ellipse()
или rect()
) любыми номерами, которые вы передаете в функцию scale()
.
Например, этот код не умножает каждое число по 2
:
size(100, 100);
scale(2);
ellipse(50, 50, 10, 10);
![big off-center circle](https://i.stack.imgur.com/KKBQK.png)
Круг теперь в два раза больше, но это также больше не в центре. Это потому, что мы также умножаем 50,50
(центр окна) на 2
, чтобы получить 100,100
(в нижнем правом углу окна). Чтобы исправить это, мы либо должны изменить 50,50
:
size(100, 100);
scale(2);
ellipse(25, 25, 10, 10);
Или мы могли бы использовать функцию translate()
переместить координаты перед тем мы делаем шкалу:
size(100, 100);
translate(50, 50);
scale(2);
ellipse(0, 0, 10, 10);
Любой подход прекрасен, так что это действительно зависит от того, какой из них имеет больше смысла для вас. Теперь у нас большой центрированный круг, хотя мы все еще подбираем его до 10,10
.
![big centered circle](https://i.stack.imgur.com/8tRR2.png)
В будущем, пожалуйста, предоставьте [mcve], а не только несколько отключенных строк кода. Сейчас трудно точно сказать, что вы просите. –