13 |
|
|
14 |
|
static double m4tmp[4][4]; /* for efficiency */ |
15 |
|
|
16 |
+ |
#ifdef BSD |
17 |
|
#define copymat4(m4a,m4b) bcopy((char *)m4b,(char *)m4a,sizeof(m4tmp)) |
18 |
+ |
#else |
19 |
+ |
#define copymat4(m4a,m4b) (void)memcpy((char *)m4a,(char *)m4b,sizeof(m4tmp)) |
20 |
+ |
extern char *memcpy(); |
21 |
+ |
#endif |
22 |
|
|
23 |
|
|
24 |
|
setident4(m4) |
56 |
|
register double v3b[3]; |
57 |
|
register double m4[4][4]; |
58 |
|
{ |
59 |
< |
register int i; |
60 |
< |
|
61 |
< |
for (i = 0; i < 3; i++) |
57 |
< |
m4tmp[0][i] = v3b[0]*m4[0][i] + |
58 |
< |
v3b[1]*m4[1][i] + |
59 |
< |
v3b[2]*m4[2][i]; |
59 |
> |
m4tmp[0][0] = v3b[0]*m4[0][0] + v3b[1]*m4[1][0] + v3b[2]*m4[2][0]; |
60 |
> |
m4tmp[0][1] = v3b[0]*m4[0][1] + v3b[1]*m4[1][1] + v3b[2]*m4[2][1]; |
61 |
> |
m4tmp[0][2] = v3b[0]*m4[0][2] + v3b[1]*m4[1][2] + v3b[2]*m4[2][2]; |
62 |
|
|
63 |
|
v3a[0] = m4tmp[0][0]; |
64 |
|
v3a[1] = m4tmp[0][1]; |