от
Я хочу, чтобы моя точечная программа развернулась, когда они достигли края так что в основном я просто рассчитать
x = width/2 cos(a)*20;
y = height/2 sin(a)*20;
это делает круговое движение. так что я хочу сделать этот поворот, проверив край. я также уже убедился, что вы достигли условия if с помощью команды println
class particles {
float x, y, a, r, cosx, siny;
particles() {
x = width/2; y = height/2; a = 0; r = 20;
}
void display() {
ellipse(x, y, 20, 20);
}
void explode() {
a = a   0.1;
cosx = cos(a)*r;
siny = sin(a)*r;
x = x   cosx;
y = y   siny;
}

void edge() {
if (x>width||x<0) cosx*=

они просто игнорируют условие if
    

        

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
С вашей проверкой проблем нет, проблема в том, что, вероятно, в следующий раз через
draw()
вы игнорируете то, что сделали в ответ на проверку, сбрасывая значения
cosx
и b1WDtGlOWae5757 Я рекомендую создать две новые переменные,
dx
и
dy
("d" для "direction"), которые всегда будут равны 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
...