#if defined _math_included
  #endinput
#endif
#define _math_included


// -- 三角関数 -------

native float:sin(float:theta);
native float:cos(float:theta);
native float:tan(float:theta);
native float:sqrt(float:src);

stock const float:PI = 3.141592;


// -- ベクトル -------

stock vecadd( float:v1[3], const float:v2[3] )
{
    v1[0] += v2[0];
    v1[1] += v2[1];
    v1[2] += v2[2];
}

stock vecsub( float:v1[3], const float:v2[3] )
{
    v1[0] -= v2[0];
    v1[1] -= v2[1];
    v1[2] -= v2[2];
}

stock vecscale( float:v1[3], float:_scale_ )
{
    v1[0] *= _scale_;
    v1[1] *= _scale_;
    v1[2] *= _scale_;
}

stock vecadd2( float:dst[3], const float:v1[3], const float:v2[3] )
{
    dst[0] = v1[0] + v2[0];
    dst[1] = v1[1] + v2[1];
    dst[2] = v1[2] + v2[2];
}

stock vecsub2( float:dst[3], const float:v1[3], const float:v2[3] )
{
    dst[0] = v1[0] - v2[0];
    dst[1] = v1[1] - v2[1];
    dst[2] = v1[2] - v2[2];
}

stock vecscale2( float:dst[3], const float:v1[3], float:_scale_ )
{
    dst[0] = v1[0] * _scale_;
    dst[1] = v1[1] * _scale_;
    dst[2] = v1[2] * _scale_;
}

stock vecset( float:dst[3], float:x, float:y, float:z )
{
    dst[0] = x;
    dst[1] = y;
    dst[2] = z;
}

stock veccopy( float:v1[3], const float:v2[3] )
{
    v1[0] = v2[0];
    v1[1] = v2[1];
    v1[2] = v2[2];
}

