annotate quotanion.cc @ 148:c920a164d68a gongo

merge
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 30 Jul 2011 14:40:13 +0900
parents d9e3137e70a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
1 #include"libps2.h"
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
2 #include<math.h>
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
3 #include"mytype.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
4
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
5 /*---------------------------
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
6 クォータニオンを求める
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
7 axis : 回転軸方向の単位ベクトル
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 angle : 回転量
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
9 ---------------------------*/
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
10 void
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
11 quotanion(FVECTOR q, FVECTOR axis, float angle)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
12 {
128
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
13 float s=sin(angle/2);
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
14 q[0] = axis[0]*s;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
15 q[1] = axis[1]*s;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
16 q[2] = axis[2]*s;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
17 q[3] = cos(angle/2);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
18 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
19
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
20 /*-----------------------
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
21 クォータニオンqから
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
22 変換行列rotを生成する
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
23 -----------------------*/
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
24 void
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
25 quotanion_rotmatrix(FMATRIX rot, FVECTOR q)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
26 {
128
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
27 rot[0][0] = q[3]*q[3] + q[0]*q[0] - q[1]*q[1] - q[2]*q[2];
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
28 rot[0][1] = 2*(q[0]*q[1] - q[3]*q[2]);
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
29 rot[0][2] = 2*(q[0]*q[2] + q[3]*q[1]);
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
30 rot[0][3] = 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
31 rot[1][0] = 2*(q[0]*q[1] + q[3]*q[2]);
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
32 rot[1][1] = q[3]*q[3] - q[0]*q[0] + q[1]*q[1] - q[2]*q[2];
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
33 rot[1][2] = 2*(q[1]*q[2] - q[3]*q[0]);
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
34 rot[1][3] = 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
35 rot[2][0] = 2*(q[0]*q[2] - q[3]*q[1]);
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
36 rot[2][1] = 2*(q[1]*q[2] + q[3]*q[0]);
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
37 rot[2][2] = q[3]*q[3] - q[0]*q[0] - q[1]*q[1] + q[2]*q[2];
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
38 rot[2][3] = 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
39 rot[3][0] = 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
40 rot[3][1] = 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
41 rot[3][2] = 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
42 rot[3][3] = 1;
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
43
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
44 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
45
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
46 float
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
47 degree2radian(float digree)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
48 {
128
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
49 float radian = digree * M_PI/180.0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
50 radian += (radian < -M_PI) ? 2*M_PI : 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
51 radian += (radian > M_PI) ? -2*M_PI : 0;
d9e3137e70a0 xml name change
e085768
parents: 99
diff changeset
52 return radian;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
53 }