Annotation of quakeworld/client/mathlib.h, revision 1.1

1.1     ! root        1: /*
        !             2: Copyright (C) 1996-1997 Id Software, Inc.
        !             3: 
        !             4: This program is free software; you can redistribute it and/or
        !             5: modify it under the terms of the GNU General Public License
        !             6: as published by the Free Software Foundation; either version 2
        !             7: of the License, or (at your option) any later version.
        !             8: 
        !             9: This program is distributed in the hope that it will be useful,
        !            10: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
        !            12: 
        !            13: See the GNU General Public License for more details.
        !            14: 
        !            15: You should have received a copy of the GNU General Public License
        !            16: along with this program; if not, write to the Free Software
        !            17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
        !            18: 
        !            19: */
        !            20: // mathlib.h
        !            21: 
        !            22: typedef float vec_t;
        !            23: typedef vec_t vec3_t[3];
        !            24: typedef vec_t vec5_t[5];
        !            25: 
        !            26: typedef        int     fixed4_t;
        !            27: typedef        int     fixed8_t;
        !            28: typedef        int     fixed16_t;
        !            29: 
        !            30: #ifndef M_PI
        !            31: #define M_PI           3.14159265358979323846  // matches value in gcc v2 math.h
        !            32: #endif
        !            33: 
        !            34: struct mplane_s;
        !            35: 
        !            36: extern vec3_t vec3_origin;
        !            37: extern int nanmask;
        !            38: 
        !            39: #define        IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask)
        !            40: 
        !            41: #define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
        !            42: #define VectorSubtract(a,b,c) {c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];}
        !            43: #define VectorAdd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];}
        !            44: #define VectorCopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];}
        !            45: 
        !            46: void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc);
        !            47: 
        !            48: vec_t _DotProduct (vec3_t v1, vec3_t v2);
        !            49: void _VectorSubtract (vec3_t veca, vec3_t vecb, vec3_t out);
        !            50: void _VectorAdd (vec3_t veca, vec3_t vecb, vec3_t out);
        !            51: void _VectorCopy (vec3_t in, vec3_t out);
        !            52: 
        !            53: int VectorCompare (vec3_t v1, vec3_t v2);
        !            54: vec_t Length (vec3_t v);
        !            55: void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross);
        !            56: float VectorNormalize (vec3_t v);              // returns vector length
        !            57: void VectorInverse (vec3_t v);
        !            58: void VectorScale (vec3_t in, vec_t scale, vec3_t out);
        !            59: int Q_log2(int val);
        !            60: 
        !            61: void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3]);
        !            62: void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]);
        !            63: 
        !            64: void FloorDivMod (double numer, double denom, int *quotient,
        !            65:                int *rem);
        !            66: fixed16_t Invert24To16(fixed16_t val);
        !            67: fixed16_t Mul16_30(fixed16_t multiplier, fixed16_t multiplicand);
        !            68: int GreatestCommonDivisor (int i1, int i2);
        !            69: 
        !            70: void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up);
        !            71: int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct mplane_s *plane);
        !            72: float  anglemod(float a);
        !            73: 
        !            74: void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees );
        !            75: 
        !            76: 
        !            77: #define BOX_ON_PLANE_SIDE(emins, emaxs, p)     \
        !            78:        (((p)->type < 3)?                                               \
        !            79:        (                                                                               \
        !            80:                ((p)->dist <= (emins)[(p)->type])?      \
        !            81:                        1                                                               \
        !            82:                :                                                                       \
        !            83:                (                                                                       \
        !            84:                        ((p)->dist >= (emaxs)[(p)->type])?\
        !            85:                                2                                                       \
        !            86:                        :                                                               \
        !            87:                                3                                                       \
        !            88:                )                                                                       \
        !            89:        )                                                                               \
        !            90:        :                                                                               \
        !            91:                BoxOnPlaneSide( (emins), (emaxs), (p)))

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.