С вашей проверкой проблем нет, проблема в том, что, вероятно, в следующий раз после draw()
вы игнорируете то, что сделали в ответ на проверку, сбрасывая значения cosx
и siny
.
Я рекомендую создать две новые переменные, dx
и dy
("d" для "направления"), которые всегда будут либо +1 и -1, и изменят эти переменные вответ на ваш край проверки.Вот минимальный пример:
float a,x,y,cosx,siny;
float dx,dy;
void setup(){
size(400,400);
background(0);
stroke(255);
noFill();
x = width/2;
y = height/2;
dx = 1;
dy = 1;
a = 0;
}
void draw(){
ellipse(x,y,10,10);
cosx = dx*20*cos(a);
siny = dy*20*sin(a);
a += 0.1;
x += cosx;
y += siny;
if (x > width || x < 0)
dx = -1*dx;
if (y > height || y < 0)
dy = -1*dy;
}
Когда вы запустите этот код, вы увидите круги, отскакивающие от краев: