Chesto mi se sluchva da svalqm ot iNet razni math libs, i obshto vzeto 
mislq che v tqh ima kakvo da se vidi ot chisto prakticheska gledna 
tochka, no eto na kakvo se natyknah na skoro:
(za kratkost sym slojil declaraciite i implementaciqta na edno mqsto)

typedef struct vector_3d_typ
{
   float x, y, z;
} point_3d,vector_3d,*point_3d_ptr,*vector_3d_ptr;

//////////////////////////////////////////////////////////////////////////////////////////
// returns the magnitude of a vector                                    
                //
//////////////////////////////////////////////////////////////////////////////////////////
float vec_magnitude(vector_3d v)
{
   float temp = v.x*v.x + v.y*v.y + v.z*v.z;

   if(temp >= 0)
       return (float)sqrt(temp);
   else
       return (float)sqrt(-temp);

}

//////////////////////////////////////////////////////////////////////////////////////////
// normalize a vector (magnitude == 1)                                  
                  //
//////////////////////////////////////////////////////////////////////////////////////////
void vec_normalize(vector_3d *v)
{

   float temp = v->x*v->x + v->y*v->y + v->z*v->z;
   float magnitude = sqrt(v->x * v->x + v->y * v->y + v->z * v->z);

   if(temp >= 0)
       magnitude = sqrt(temp);
   else
       magnitude = sqrt(-temp);


   v->x = v->x / magnitude;
   v->y = v->y / magnitude;
   v->z = v->z / magnitude;
}
  
//////////////////////////////////////////////////////////////////////////////////////////
// computes the dot product between u and v                              
                  //
//////////////////////////////////////////////////////////////////////////////////////////
float vec_dot_product(vector_3d u, vector_3d v)
{
   return( (u.x * v.x) + (u.y + v.y) + (u.z + v.z));
}

//////////////////////////////////////////////////////////////////////////////////////////
// computes the distance between a and b                                
                //
//////////////////////////////////////////////////////////////////////////////////////////
float vec_distance(point_3d a, point_3d b)
{
   float dx, dy, dz;
   float temp;

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

   temp = dx*dx + dy*dy + dz*dz;

   if(temp >= 0)
       return (sqrt(temp));
   else
       return sqrt(-temp);

}

dano ne rabotim nqkoga s programist, pishesht tolkova "korekten" i 
"efektiven" code:))
Martin

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* To unsubscribe from this list, send e-mail to [EMAIL PROTECTED]
without subject and with message body "unsubscribe jokes [EMAIL PROTECTED]"
(without quotes)
* To subscribe to this list, send e-mail to [EMAIL PROTECTED]
without subject and with message body "subscribe jokes [EMAIL PROTECTED]"
(without quotes)
* Mails to this list should be sent to [EMAIL PROTECTED]
* If you experience any problems contact [EMAIL PROTECTED]
* Archives available at [EMAIL PROTECTED]
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Одговори путем е-поште