2014-10-23 3 views
0

Я использую Обработку, чтобы попытаться нарисовать что-то, и я застреваю в цикле FOR, который я пытаюсь запустить.Обработка - Перевод и Вращение, для цикла

У меня есть эскиз, который я хотел бы сделать короче, воспользовавшись командами Translate and Rotate. Однако по какой-то причине я не могу заставить это работать. Если я прокомментирую первый цикл FOR («for (int k = 0; ...)», он правильно рисует в одном из моих 8 квадрантов. Я просто хочу, чтобы затем повернуть на 45 градусов, снова нарисовать и продолжить до тех пор, пока он идет полный круг.

int hHeight, hWidth; 


void setup(){ 
size(800,800); 
hHeight = height/2; 
hWidth = width/2; 
background(0); 
strokeWeight(.5); 


} 
void grid(){ 
    stroke(255); 
    line(hWidth,0,hWidth,height); 
    line(0,hHeight,width,hHeight); 
    line(width,0,0,height); 
    line(0,0,width,height); 
} 


void rotatingGrid(float steps){ // This is the one I am having trouble with... 
    for (int k = 0; k == 8; k ++){ // loop this 8 times, to complete 8 rotations 
     pushMatrix(); 
     translate(hWidth,hHeight); 
     rotate(radians(45)); 
     for (int i = 0; i < hWidth; i+= steps){ 
     line(i,0,hWidth-i,hHeight-i); 
     } 
    popMatrix(); 
    } 
} 

void draw(){ 
    stroke(255); 
    grid(); 
    rotatingGrid(10); 
} 

Так что если вы закомментировать первый цикл (и закрывающая скобка), она работает правильно. Как я могу цикл, который, вращая его в 7 раз, вместо того, чтобы просто поставить «Rotate (радианы (45))»и цикл 7 несколько раз

спасибо за любые советы или помощь

ответ

1

первый цикл должен быть?. (интермедиат к = 0; K < 8; K ++) если вы хотите, чтобы он запускал 8 эс. Если вы хотите, чтобы угол идти 45, 90, ... 360, то вы можете добавить переменную так:

int angle = 0; 
.... 
angle+=45; 
rotate(radians(angle)); 
.... 

также, вы можете поменять вращаться и перевести, если вы хотите, чтобы вращаться вокруг объекта, происхождение вместо того, чтобы иметь его в большем круге, не знаете, какой эффект вы хотите здесь.

+0

Aha! Спасибо! Я поставил «int angle = 0» перед циклом for, добавив «угол + = 45; после поворота линии и сделал «k <8», и он сработал. Большое спасибо за Вашу помощь! – user3718365

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