2016-02-25 4 views
-1

Может кто-нибудь объяснить мне, как использовать функцию перевода при использовании обработки?Перевести функцию

int startposition =0; 
  
void setup(){ 
    size(500,500); 
} 

void draw(){   
    background(255); 
    fill(0); 
    translate(startposition,50); 
    rect(0,  0,  200,  200); 
    ellipse(0,  0,  300,  200); 
    startposition = startposition +  1; 
} 

Может кто-нибудь объяснить мне, что цель использования перевода здесь, так как мы уже говорят о том, что StartPosition = StartPosition +1 ....

я не понимаю, что функция перевода

+2

Добро пожаловать в переполнение стека. К сожалению, мы понятия не имеем, какую библиотеку вы используете или какой контекст. Если вы опубликуете [mcve], мы с большей вероятностью можем вам помочь. –

+0

java function ?? вы должны понимать метод. так какой класс? вы посмотрели на javadoc? они обычно описывают это довольно хорошо –

+0

Это обработка ... – Blah

ответ

0
startposition = startposition + 1; 

Эта строка ничего не собирается делать, если вы оставите ее без перевода. Перевод фактически изменяет текущее происхождение холста чертежа. Происхождение обычно находится в верхнем левом углу и начинается с (0,0);

Так что перевод будет делать все, что рисуется после быть в startposition пикселях от й происхождения, равно 0.

Чтобы увидеть, что я имею в виду попытаться запустить программу перевода и без, и вы увидите разницу ,

+0

Большое вам спасибо – Blah

2

На такие вопросы лучше всего ответить, прочитав the Processing reference.

Here является опорным для функции translate():

Указывает количество смещать объекты в окне дисплея. Параметр x указывает сдвиг влево/вправо, параметр y указывает сдвиг вверх/вниз, а параметр z указывает на перевод в сторону/в сторону от экрана. Использование этой функции с параметром z требует использования P3D в качестве параметра в сочетании с размером, как показано в приведенном выше примере.

Преобразования являются совокупными и применяются ко всему, что происходит после, и последующие вызовы функции накапливают эффект. Например, вызов translate (50, 0), а затем перевод (20, 0) является таким же, как и для перевода (70, 0). Если translate() вызывается в draw(), преобразование сбрасывается, когда цикл начинается снова. Эту функцию можно дополнительно контролировать с помощью pushMatrix() и popMatrix().

Примеры:

translate(30, 20); 
rect(0, 0, 55, 55); 

// Translating in 3D requires P3D 
// as the parameter to size() 
size(100, 100, P3D); 
// Translate 30 across, 20 down, and 
// 50 back, or "away" from the screen. 
translate(30, 20, -50); 
rect(0, 0, 55, 55); 

rect(0, 0, 55, 55); // Draw rect at original 0,0 
translate(30, 20); 
rect(0, 0, 55, 55); // Draw rect at new 0,0 
translate(14, 14); 
rect(0, 0, 55, 55); // Draw rect at new 0,0 

Другими словами, функция translate() перемещает рисунок холста, так что будет компенсировать любые последующие вызовы функций, таких как rect() или ellipse(). Это позволяет вам перемещать «камеру» без изменения положения всех экранных объектов.

Обратите внимание, что вы рисуете свой прямоугольник и круг в позиции 0,0. Вы не используете переменную startposition в качестве своих позиций.Вот почему вы должны позвонить translate(), чтобы переместить их. Вы можете избавиться от звонка до translate(), но при этом вам следует использовать переменную startposition.

+0

Большое спасибо за вашу помощь – Blah

Смежные вопросы