[ BIG FOOT @ 20.03.2005. 21:21 ] @
Pozdrav!
Zadatak:
" Kugla se pravolinijski krece po bilijarskom stolu(ugao 45stepeni). Odrediti prvih 10 tacaka odbijanja."

radim u PAS-u ali moze i samo recima kako bi izgledao taj algortam.


2. Kako da odredim koliko ce puta kugla preseci sopstvenu putanju.

Poz,
BF
[ blaza @ 21.03.2005. 01:04 ] @
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";
    }
}