Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5225 alpine 1
#ifndef rs_mx_t_H_INCLUDED
2
#define rs_mx_t_H_INCLUDED
3
 
4
// Some matrix and vector stuff
5
// by Roman Shuvalov
6
 
7
#define RS_SQR(x) ((x)*(x))
8
 
9
 
10
// actual period is 1024 ms (1.024 sec)
11
#define RS_TIME_KOEF_SEC (M_PI * 2.0 * 64.0 / 65536.0)
12
 
13
 
14
 
15
typedef struct {
16
    union {
17
        struct {
18
            float x;
19
            float y;
20
            float z;
21
        };
22
        float v[3];
23
    };
24
 
25
} rs_vec3_t;
26
 
27
 
28
typedef struct {
29
    union {
30
        struct {
31
            float x;
32
            float y;
33
            float z;
34
            float w;
35
        };
36
        float v[4];
37
    };
38
 
39
} rs_vec4_t;
40
 
41
 
42
 
43
 
44
 
45
 
46
rs_vec3_t rs_vec3_sub(rs_vec3_t v1, rs_vec3_t v2);
47
 
48
rs_vec3_t rs_vec3_add(rs_vec3_t v1, rs_vec3_t v2);
49
 
50
rs_vec3_t rs_vec3_mult(rs_vec3_t v, float s);
51
 
52
 
53
rs_vec4_t rs_vec4_sub(rs_vec4_t v1, rs_vec4_t v2);
54
 
55
void rs_vec4_add(rs_vec4_t dest, rs_vec4_t v1, rs_vec4_t v2);
56
 
57
rs_vec4_t rs_vec4(float x, float y, float z, float w);
58
 
59
rs_vec3_t rs_vec3(float x, float y, float z);
60
 
61
 
62
 
63
 
64
float rs_vec4_length_sqr(rs_vec4_t src);
65
float rs_vec3_length_sqr(rs_vec3_t src);
66
 
67
 
68
 
69
float rs_vec4_length(rs_vec4_t v);
70
float rs_vec3_length(rs_vec3_t v);
71
 
72
float rs_vec4_dot(rs_vec4_t v1, rs_vec4_t v2);
73
float rs_vec3_dot(rs_vec3_t v1, rs_vec3_t v2);
74
 
75
 
76
rs_vec3_t rs_vec3_cross(rs_vec3_t u, rs_vec3_t v);
77
 
78
rs_vec3_t rs_vec3_normalize(rs_vec3_t v);
79
 
80
float rs_vec4_angle(rs_vec4_t u, rs_vec4_t v);
81
 
82
float rs_vec3_cos_angle(rs_vec3_t u, rs_vec3_t v);
83
 
84
 
85
 
86
float rs_vec3_distance_sqr(rs_vec3_t u, rs_vec3_t v);
87
 
88
float rs_clamp(float x, float min1, float max1);
89
int rs_clamp_i(int x, int min1, int max1);
90
 
91
float rs_max(float x, float y);
92
float rs_min(float x, float y);
93
 
94
float rs_sign(float f);
95
float rs_pow(float f, float p);
96
float rs_fract(float f);
97
 
98
float rs_exp_interpolate(float v_from, float v_to, float dt);
99
float rs_linear_interpolate(float v_from, float v_to, float t);
100
 
101
 
102
float rs_clamp_angle(float f);
103
 
104
#endif // rs_mx_t_H_INCLUDED