aboutsummaryrefslogtreecommitdiff
path: root/motionplus.pd
blob: 3942f7f8e865a4ba91b66af9b70ccf44cc108e7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
#N canvas 325 242 656 565 10;
#X obj 51 48 inlet wiimotionplus;
#X obj 51 70 route wiimotionplus;
#X text 196 39 just in case somebody uses the [wiimote]s output directly
;
#N canvas 676 229 450 300 slowfast 0;
#X obj 105 55 inlet;
#X obj 105 77 route angle_rate low_speed;
#X obj 105 107 unpack 0 0 0;
#X obj 194 107 unpack 0 0 0;
#X obj 105 232 pack;
#X obj 105 254 outlet pitch;
#X obj 195 232 pack;
#X obj 278 232 pack;
#X obj 195 254 outlet roll;
#X obj 278 254 outlet yaw;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 2 0 4 0;
#X connect 2 1 6 0;
#X connect 2 2 7 0;
#X connect 3 0 4 1;
#X connect 3 1 6 1;
#X connect 3 2 7 1;
#X connect 4 0 5 0;
#X connect 6 0 8 0;
#X connect 7 0 9 0;
#X restore 51 98 pd slowfast;
#X obj 51 297 pack 0 0 0;
#X obj 51 120 motionplus_rate2angle;
#X obj 51 319 outlet yaw roll pitch;
#X obj 218 230 pack 0 0 0;
#X obj 242 118 t a a a;
#X msg 242 85 reset;
#X msg 300 95 deadzone \$1;
#X floatatom 300 75 5 0 0 0 - - -;
#X obj 218 322 outlet dYaw dRoll dPitch;
#X obj 88 150 motionplus_rate2angle;
#X obj 125 180 motionplus_rate2angle;
#N canvas 0 0 450 300 angleaxis 0;
#X obj 142 209 mtx_*;
#X obj 142 231 t a a;
#X obj 273 154 loadbang;
#X msg 142 155 \$1 0 0;
#N canvas 295 417 569 550 angleaxis2mtx 0;
#X obj 73 43 inlet dYaw dRoll dPitch;
#N canvas 0 0 450 300 length 0;
#X obj 84 59 t f f;
#X obj 84 81 *;
#X obj 84 103 +;
#X obj 84 125 outlet;
#X obj 134 59 t f f;
#X obj 134 81 *;
#X obj 134 103 +;
#X obj 184 59 t f f;
#X obj 184 81 *;
#X obj 84 37 unpack 0 0 0;
#X obj 84 15 inlet;
#X connect 0 0 1 0;
#X connect 0 1 1 1;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 4 0 5 0;
#X connect 4 1 5 1;
#X connect 5 0 6 0;
#X connect 6 0 2 1;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 8 0 6 1;
#X connect 9 0 0 0;
#X connect 9 1 4 0;
#X connect 9 2 7 0;
#X connect 10 0 9 0;
#X restore 105 84 pd length;
#X obj 73 65 t l l;
#N canvas 0 0 450 300 normalize 0;
#X obj 74 36 inlet;
#X obj 74 58 unpack 0 0 0;
#X obj 74 102 pack 0 0 0;
#X obj 74 124 outlet;
#X obj 74 80 * 1;
#X obj 114 80 * 1;
#X obj 155 80 * 1;
#X obj 261 33 inlet length;
#X msg 261 55 1 \$1;
#X obj 261 77 /;
#X obj 165 57 t f f f;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 1 1 5 0;
#X connect 1 2 6 0;
#X connect 2 0 3 0;
#X connect 4 0 2 0;
#X connect 5 0 2 1;
#X connect 6 0 2 2;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 4 1;
#X connect 10 1 5 1;
#X connect 10 2 6 1;
#X restore 73 145 pd normalize;
#X obj 105 106 t f f;
#N canvas 0 0 450 300 deg2rad 0;
#X obj 109 112 inlet deg;
#X obj 109 231 outlet rad;
#X obj 181 179 / 45;
#X obj 181 113 loadbang;
#X obj 109 202 * 0.0174533;
#X obj 109 178 f;
#X text 93 282 rad=deg*pi/180;
#X obj 181 156 atan;
#X msg 181 135 1;
#X text 225 36 part of zexy;
#X text 63 66 convert DEGree to RADiant;
#X connect 0 0 5 0;
#X connect 2 0 4 1;
#X connect 3 0 8 0;
#X connect 4 0 1 0;
#X connect 5 0 4 0;
#X connect 7 0 2 0;
#X connect 8 0 7 0;
#X restore 171 146 pd deg2rad;
#X obj 171 168 t f f;
#X obj 171 190 cos;
#X obj 171 212 t f f;
#X obj 203 234 * -1;
#X obj 203 256 + 1;
#X obj 203 190 sin;
#X text 297 81 c=cos() \, s=sin() \, C=1-c;
#X text 297 141 [ z*x*C-y*s y*z*C+x*s z*z*C+c ];
#X text 297 100 [ x*x*C+c x*y*C-z*s z*x*C+y*s ];
#X text 297 121 [ x*y*C+z*s y*y*C+c y*z*C-x*s ];
#X obj 73 282 pack 0 0 0 0 0 0;
#X obj 310 255 expr;
#X obj 73 305 expr $f1*$f1*$f6+$f4 \; $f1*$f2*$f6-$f3*$f5 \; $f1*$f3*$f6+$f2*$f5
\; $f1*$f2*$f6+$f3*$f5 \; $f2*$f2*$f6+$f4 \; $f2*$f3*$f6-$f1*$f5 \;
$f1*$f3*$f6-$f2*$f5 \; $f2*$f3*$f6+$f1*$f5 \; $f3*$f3*$f6+$f4;
#X obj 73 430 pack 0 0 0 0 0 0 0 0 0;
#X obj 73 452 list prepend matrix 3 3;
#X obj 73 474 list trim;
#X obj 73 496 outlet Rot;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 2 1 1 0;
#X connect 3 0 16 0;
#X connect 4 0 3 1;
#X connect 4 1 5 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 6 1 11 0;
#X connect 7 0 8 0;
#X connect 8 0 16 3;
#X connect 8 1 9 0;
#X connect 9 0 10 0;
#X connect 10 0 16 5;
#X connect 11 0 16 4;
#X connect 16 0 18 0;
#X connect 18 0 19 0;
#X connect 18 1 19 1;
#X connect 18 2 19 2;
#X connect 18 3 19 3;
#X connect 18 4 19 4;
#X connect 18 5 19 5;
#X connect 18 6 19 6;
#X connect 18 7 19 7;
#X connect 18 8 19 8;
#X connect 19 0 20 0;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X restore 142 182 pd angleaxis2mtx;
#X text 170 22 doesn't really work;
#X msg 273 181 matrix 3 3 1 0 0 0 1 0 0 0 1;
#X connect 0 0 1 0;
#X connect 1 1 0 1;
#X connect 2 0 6 0;
#X connect 3 0 4 0;
#X connect 4 0 0 0;
#X connect 6 0 0 1;
#X restore 485 276 pd angleaxis;
#X obj 412 79 inlet;
#X obj 51 237 wrap -180 180;
#X obj 88 257 wrap -180 180;
#X obj 125 277 wrap -180 180;
#X connect 0 0 1 0;
#X connect 1 0 3 0;
#X connect 1 1 3 0;
#X connect 3 0 5 0;
#X connect 3 1 13 0;
#X connect 3 2 14 0;
#X connect 4 0 6 0;
#X connect 5 0 17 0;
#X connect 5 1 7 0;
#X connect 7 0 12 0;
#X connect 8 0 5 1;
#X connect 8 1 13 1;
#X connect 8 2 14 1;
#X connect 9 0 8 0;
#X connect 10 0 8 0;
#X connect 11 0 10 0;
#X connect 13 0 18 0;
#X connect 13 1 7 1;
#X connect 14 0 19 0;
#X connect 14 1 7 2;
#X connect 16 0 8 0;
#X connect 17 0 4 0;
#X connect 18 0 4 1;
#X connect 19 0 4 2;