[ bags @ 08.06.2004. 14:55 ] @
Daleko je moje pitanje od bilo kakvog arta ;) ,ali evo ovako:

Data je tacka X u kvadru ABCDEFGH.
Ja trebam izracunati udaljenost od izmedju X i svake od tih tacaka.

Ja to radim po ovoj formuli (da bi bilo jasnije ima slika uz poruku):

D = sqrt (R^2 + Q^2).
gde je Q^2 = G^2 + B^2.

Problem je u tome sto ja to radim 8 puta posebno (tj. za svaku tacku).

Moze li mi neko pomoci da napisem uopsteno neku metodu.

Hvala unaprijed








[Ovu poruku je menjao bags dana 08.06.2004. u 17:24 GMT]
[ noviKorisnik @ 08.06.2004. 15:04 ] @
[ Revisor @ 18.06.2004. 15:24 ] @
Za pocetak D=sqrt(dx*dx + dy*dy +dz*dz);

Posao se ne moze previse optimizovati jer, sem u nekim stvarno specijalnim slucajevima, uvek ce trebati osam racuna da bi se dobilo osam rezultata. Neke olaksice mogu da postoje ako je jedno teme kvadra npr. uvek u (0,0,0) i ako su mu ivice uvek paralelne sa ortovima. Ili ako vazi samo ovo drugo, makar delimicno ali savet je - radi standardno:

d(A,B) = sqrt( (A.x-B.x)^2 + (A.y-B.y)^2 + (A.z-B.z)^2 );

Code:
float p3dist(const point3d&a,const ponit3d&b)
{
    static float dx,dy,dz;

    dx = a.x - b.x;
    dy = a.y - b.y;
    dz = a.z - b.z;

    return sqrt(dx*dx + dy*dy + dz*dz);
}


Slazem se, stvarno nije neki art of programming, sem ako neko ne postuje nesto revolucionarno...