Evo straightforward resenja. Za broj preseka putanje, pokusaj da pamtis sve duzi od kojih se putanja sastoji, te trazi medjusobne preseke.
Code:
float a = 6, b = 5;//sirina i duzina stola, respektivno
//centar je u (0,0)
float x = 0,y = 0;//pocetne koordinate kugle (mora da vazi |x| <= a/2 i |y| <= b/2)
float xv = -1.0, yv = 1.0;//vektor smera kretanja koji moze uzeti jedino vrednosti (1, 1), (1, -1), (-1, 1) i (-1, -1)
int main(void){
for(int i = 1; i <= 10;){
float sx = a / 2.0 - x * xv;
float sy = b / 2.0 - y * yv;
if(sx < sy){
x += sx * xv;
y += sx * yv;
xv = -xv;
if(sx == 0.0)
continue;
}
else{
x += sy * xv;
y += sy * yv;
yv = -yv;
if(sy == 0.0)
continue;
}
cout << i++ << "-i sudar u koordinati (" << x << ", " << y << ")\n";
}
}
O_o