martin@0
|
1 //
|
martin@0
|
2 // MyPlot.cpp
|
martin@12
|
3 // ClassicAmbiDec
|
martin@0
|
4 //
|
martin@0
|
5 // Created by Martin Morrell on 25/06/2012.
|
martin@0
|
6 // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
martin@0
|
7 //
|
martin@0
|
8
|
martin@0
|
9 #include "MyPlot.h"
|
martin@0
|
10
|
martin@0
|
11
|
martin@0
|
12
|
martin@7
|
13
|
martin@7
|
14 polarPlot::polarPlot(const CRect &size): CView (size)
|
martin@6
|
15 {
|
martin@7
|
16 stereo_mode = 0;
|
martin@7
|
17 pattern = 0.5;
|
martin@7
|
18 width = 45;
|
martin@8
|
19 centre_pattern = 0.5;
|
martin@8
|
20 centre_gain = 0;
|
martin@8
|
21 surround_mode = 0;
|
martin@8
|
22 surround_pattern = 0.5;
|
martin@8
|
23 surround_width = 60;
|
martin@8
|
24 surround_mode = 0;
|
martin@9
|
25 decoder_mode = 0;
|
martin@9
|
26 decoder_prev = 0;
|
martin@7
|
27 };
|
martin@6
|
28
|
martin@6
|
29
|
martin@7
|
30
|
martin@7
|
31
|
martin@7
|
32 void polarPlot::draw (CDrawContext* context)
|
martin@7
|
33 {
|
martin@7
|
34 //Plot background circle
|
martin@7
|
35 circle(context);
|
martin@7
|
36
|
martin@8
|
37
|
martin@8
|
38 //Plot Needed Polar Patterns
|
martin@8
|
39 switch (decoder_mode) {
|
martin@8
|
40 case 2:
|
martin@8
|
41 //Stereo Mic Patterns
|
martin@8
|
42 leftMicPattern(context);
|
martin@8
|
43 rightMicPattern(context);
|
martin@8
|
44 break;
|
martin@8
|
45
|
martin@8
|
46 case 3:
|
martin@8
|
47 //2.1 Mic Patterns
|
martin@8
|
48 leftMicPattern(context);
|
martin@8
|
49 rightMicPattern(context);
|
martin@8
|
50 break;
|
martin@8
|
51
|
martin@8
|
52 case 4:
|
martin@8
|
53 //Quad Mic Patterns
|
martin@8
|
54 leftMicPattern(context);
|
martin@8
|
55 rightMicPattern(context);
|
martin@8
|
56 lsMicPattern(context);
|
martin@8
|
57 rsMicPattern(context);
|
martin@8
|
58 break;
|
martin@8
|
59
|
martin@8
|
60 case 5:
|
martin@9
|
61 switch (decoder_mode5x) {
|
martin@9
|
62 case 0:
|
martin@9
|
63 //5.0 Mic Patterns
|
martin@9
|
64 leftMicPattern(context);
|
martin@9
|
65 rightMicPattern(context);
|
martin@9
|
66 centreMicPattern(context);
|
martin@9
|
67 lsMicPattern(context);
|
martin@9
|
68 rsMicPattern(context);
|
martin@9
|
69 break;
|
martin@9
|
70 case 1:
|
martin@9
|
71 //Heller 1 Plot
|
martin@9
|
72 heller1Pattern(context);
|
martin@9
|
73 break;
|
martin@9
|
74 case 2:
|
martin@9
|
75 //Heller 2 Plot
|
martin@9
|
76 heller2Pattern(context);
|
martin@9
|
77 break;
|
martin@9
|
78
|
martin@9
|
79 default:
|
martin@9
|
80 break;
|
martin@9
|
81 }
|
martin@9
|
82
|
martin@8
|
83 break;
|
martin@8
|
84
|
martin@8
|
85 case 6:
|
martin@9
|
86 switch (decoder_mode5x) {
|
martin@9
|
87 case 0:
|
martin@9
|
88 //5.1 Mic Patterns
|
martin@9
|
89 leftMicPattern(context);
|
martin@9
|
90 rightMicPattern(context);
|
martin@9
|
91 centreMicPattern(context);
|
martin@9
|
92 lsMicPattern(context);
|
martin@9
|
93 rsMicPattern(context);
|
martin@9
|
94 break;
|
martin@9
|
95 case 1:
|
martin@9
|
96 //Heller 1 Plot
|
martin@9
|
97 heller1Pattern(context);
|
martin@9
|
98 break;
|
martin@9
|
99 case 2:
|
martin@9
|
100 //Heller 2 Plot
|
martin@9
|
101 heller2Pattern(context);
|
martin@9
|
102 break;
|
martin@9
|
103
|
martin@9
|
104 default:
|
martin@9
|
105 break;
|
martin@9
|
106 }
|
martin@8
|
107 break;
|
martin@8
|
108
|
martin@8
|
109
|
martin@8
|
110 default:
|
martin@8
|
111 break;
|
martin@8
|
112 }
|
martin@8
|
113
|
martin@7
|
114 setDirty(false);
|
martin@0
|
115 };
|
martin@0
|
116
|
martin@0
|
117
|
martin@7
|
118 void polarPlot::circle(CDrawContext *context)
|
martin@7
|
119 {
|
martin@12
|
120 //Plot Ellipse - Background Circle
|
martin@7
|
121 context->setLineWidth (3);
|
martin@7
|
122 CColor eclColor = CColor(120,120,120,125);
|
martin@7
|
123 context->setFrameColor(eclColor);
|
martin@7
|
124 ;
|
martin@7
|
125 CRect circleSize = CRect(size.getCenter().x-size.getHeight()/2*0.82, size.getCenter().y-size.getHeight()/2*0.82, size.getCenter().x+size.getHeight()/2*0.82, size.getCenter().y+size.getHeight()/2*0.82);
|
martin@7
|
126 context->drawEllipse(circleSize);
|
martin@7
|
127 };
|
martin@0
|
128
|
martin@0
|
129
|
martin@7
|
130
|
martin@7
|
131 void polarPlot::leftMicPattern(CDrawContext* context)
|
martin@7
|
132 {
|
martin@7
|
133 CColor redColor = CColor(255,0,0,255);
|
martin@7
|
134 double radius, x, y, ptA, ptB;
|
martin@7
|
135 int ang = 0;
|
martin@7
|
136
|
martin@7
|
137
|
martin@7
|
138 while (ang<360) {
|
martin@7
|
139
|
martin@7
|
140 switch (stereo_mode) {
|
martin@7
|
141 case 0:
|
martin@7
|
142 {
|
martin@7
|
143 radius = fabs(pattern+(1-pattern)*(cos((ang-width)/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@7
|
144 break;
|
martin@7
|
145 }
|
martin@7
|
146 case 1:
|
martin@7
|
147 {
|
martin@7
|
148 ptA = cos(width/180.0*M_PI) * (pattern + (1-pattern)*(cos(ang/180.0*M_PI)));
|
martin@7
|
149 ptB = sin(width/180.0*M_PI) * (sin(ang/180.0*M_PI));
|
martin@7
|
150
|
martin@7
|
151 radius = fabs(ptA + ptB) * size.getHeight()/2*0.8;
|
martin@7
|
152 break;
|
martin@7
|
153 }
|
martin@7
|
154
|
martin@7
|
155 default:
|
martin@7
|
156 break;
|
martin@7
|
157 }
|
martin@7
|
158
|
martin@12
|
159
|
martin@9
|
160 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
161 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@7
|
162
|
martin@7
|
163 context->beginDraw();
|
martin@7
|
164 CPoint point = CPoint((int)x, (int)y);
|
martin@7
|
165 context->drawPoint(point, redColor);
|
martin@7
|
166 context->endDraw();
|
martin@7
|
167
|
martin@7
|
168 ang++;
|
martin@7
|
169 }
|
martin@7
|
170 };
|
martin@7
|
171
|
martin@7
|
172
|
martin@7
|
173 void polarPlot::rightMicPattern(CDrawContext* context)
|
martin@7
|
174 {
|
martin@7
|
175 CColor blueColor = CColor(0,0,255,255);
|
martin@7
|
176 double radius, x, y, ptA, ptB;
|
martin@7
|
177 int ang = 0;
|
martin@7
|
178
|
martin@7
|
179 while (ang<360) {
|
martin@7
|
180
|
martin@7
|
181 switch (stereo_mode) {
|
martin@7
|
182 case 0:
|
martin@7
|
183 {
|
martin@7
|
184 radius = fabs(pattern+(1-pattern)*(cos((ang+width)/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@7
|
185 break;
|
martin@7
|
186 }
|
martin@7
|
187 case 1:
|
martin@7
|
188 {
|
martin@7
|
189 ptA = cos(width/180.0*M_PI) * (pattern + (1-pattern)*(cos(ang/180.0*M_PI)));
|
martin@7
|
190 ptB = sin(width/180.0*M_PI) * (sin(ang/180.0*M_PI));
|
martin@7
|
191
|
martin@7
|
192 radius = fabs(ptA - ptB) * size.getHeight()/2*0.8;
|
martin@7
|
193 break;
|
martin@7
|
194 }
|
martin@7
|
195
|
martin@7
|
196 default:
|
martin@7
|
197 break;
|
martin@7
|
198 }
|
martin@7
|
199
|
martin@7
|
200
|
martin@8
|
201 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@8
|
202 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@7
|
203
|
martin@7
|
204 context->beginDraw();
|
martin@7
|
205 CPoint point = CPoint((int)x, (int)y);
|
martin@7
|
206 context->drawPoint(point, blueColor);
|
martin@7
|
207 context->endDraw();
|
martin@7
|
208
|
martin@8
|
209 ang++;
|
martin@8
|
210 }
|
martin@8
|
211 };
|
martin@8
|
212
|
martin@8
|
213
|
martin@8
|
214
|
martin@12
|
215 void polarPlot::centreMicPattern(CDrawContext* context)
|
martin@8
|
216 {
|
martin@9
|
217 CColor yellowColor = CColor(255,215,0,255);
|
martin@8
|
218 double radius, x, y;
|
martin@8
|
219 int ang = 0;
|
martin@8
|
220
|
martin@8
|
221 while (ang<360) {
|
martin@8
|
222 radius = fabs(centre_pattern+(1-centre_pattern)*(cos((ang)/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@8
|
223
|
martin@9
|
224 x = size.getCenter().x - (sin(ang/180.0*M_PI)*(radius*(pow(10,centre_gain/gFactor/20))));
|
martin@9
|
225 y = size.getCenter().y - (cos(ang/180.0*M_PI)*(radius*(pow(10,centre_gain/gFactor/20))));
|
martin@8
|
226
|
martin@8
|
227 context->beginDraw();
|
martin@8
|
228 CPoint point = CPoint((int)x, (int)y);
|
martin@8
|
229 context->drawPoint(point, yellowColor);
|
martin@8
|
230 context->endDraw();
|
martin@7
|
231
|
martin@7
|
232 ang++;
|
martin@7
|
233 }
|
martin@7
|
234 };
|
martin@8
|
235
|
martin@8
|
236
|
martin@8
|
237
|
martin@8
|
238
|
martin@8
|
239
|
martin@8
|
240 void polarPlot::lsMicPattern(CDrawContext* context)
|
martin@8
|
241 {
|
martin@8
|
242 CColor greenColor = CColor(0,255,0,255);
|
martin@8
|
243 double radius, x, y, ptA, ptB;
|
martin@8
|
244 int ang = 0;
|
martin@7
|
245
|
martin@8
|
246 while (ang<360) {
|
martin@8
|
247 switch (surround_mode) {
|
martin@8
|
248 case 0:
|
martin@8
|
249 {
|
martin@8
|
250 radius = fabs(surround_pattern+(1-surround_pattern)*(cos((ang-surround_width-180)/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@8
|
251 break;
|
martin@8
|
252 }
|
martin@8
|
253 case 1:
|
martin@8
|
254 {
|
martin@8
|
255 ptA = cos(surround_width/180.0*M_PI) * (surround_pattern + (1-surround_pattern)*(cos((ang-180)/180.0*M_PI)));
|
martin@8
|
256 ptB = sin(surround_width/180.0*M_PI) * (sin((ang-180)/180.0*M_PI));
|
martin@8
|
257
|
martin@8
|
258 radius = fabs(ptA + ptB) * size.getHeight()/2*0.8;
|
martin@8
|
259 break;
|
martin@8
|
260 }
|
martin@8
|
261
|
martin@8
|
262 default:
|
martin@8
|
263 break;
|
martin@8
|
264 }
|
martin@8
|
265
|
martin@8
|
266
|
martin@8
|
267
|
martin@9
|
268 x = size.getCenter().x + (sin(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20))));
|
martin@9
|
269 y = size.getCenter().y - (cos(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20))));
|
martin@8
|
270
|
martin@8
|
271 context->beginDraw();
|
martin@8
|
272 CPoint point = CPoint((int)x, (int)y);
|
martin@8
|
273 context->drawPoint(point, greenColor);
|
martin@8
|
274 context->endDraw();
|
martin@8
|
275
|
martin@8
|
276 ang++;
|
martin@8
|
277 }
|
martin@8
|
278 };
|
martin@7
|
279
|
martin@7
|
280
|
martin@8
|
281 void polarPlot::rsMicPattern(CDrawContext* context)
|
martin@8
|
282 {
|
martin@8
|
283 CColor brownColor = CColor(139,69,19,255);
|
martin@8
|
284 double radius, x, y, ptA, ptB;
|
martin@8
|
285 int ang = 0;
|
martin@8
|
286
|
martin@8
|
287 while (ang<360) {
|
martin@8
|
288 switch (surround_mode) {
|
martin@8
|
289 case 0:
|
martin@8
|
290 {
|
martin@8
|
291 radius = fabs(surround_pattern+(1-surround_pattern)*(cos((ang-180+surround_width)/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@8
|
292 break;
|
martin@8
|
293 }
|
martin@8
|
294 case 1:
|
martin@8
|
295 {
|
martin@8
|
296 ptA = cos(surround_width/180.0*M_PI) * (surround_pattern + (1-surround_pattern)*(cos((ang-180)/180.0*M_PI)));
|
martin@8
|
297 ptB = sin(surround_width/180.0*M_PI) * (sin((ang-180)/180.0*M_PI));
|
martin@8
|
298
|
martin@8
|
299 radius = fabs(ptA - ptB) * size.getHeight()/2*0.8;
|
martin@8
|
300 break;
|
martin@8
|
301 }
|
martin@8
|
302
|
martin@8
|
303 default:
|
martin@8
|
304 break;
|
martin@8
|
305 }
|
martin@8
|
306
|
martin@9
|
307 x = size.getCenter().x + (sin(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20))));
|
martin@9
|
308 y = size.getCenter().y - (cos(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20))));
|
martin@8
|
309
|
martin@8
|
310 context->beginDraw();
|
martin@8
|
311 CPoint point = CPoint((int)x, (int)y);
|
martin@8
|
312 context->drawPoint(point, brownColor);
|
martin@8
|
313 context->endDraw();
|
martin@8
|
314
|
martin@8
|
315 ang++;
|
martin@8
|
316 }
|
martin@8
|
317 };
|
martin@7
|
318
|
martin@7
|
319
|
martin@9
|
320 void polarPlot::heller1Pattern(VSTGUI::CDrawContext *context)
|
martin@9
|
321 {
|
martin@9
|
322 double radius, x, y;
|
martin@9
|
323 int ang = 0;
|
martin@9
|
324
|
martin@9
|
325 //Left Polar
|
martin@9
|
326 CColor redColor = CColor(255,0,0,255);
|
martin@9
|
327 while (ang<360) {
|
martin@9
|
328 radius = 1.4017195157709*fabs(0.28205165*(1/sqrt(2.0)) +0.24760232*(cos(ang/180.0*M_PI)) +0.18790454*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@7
|
329
|
martin@9
|
330 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
331 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
332
|
martin@9
|
333 context->beginDraw();
|
martin@9
|
334 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
335 context->drawPoint(point, redColor);
|
martin@9
|
336 context->endDraw();
|
martin@9
|
337
|
martin@9
|
338 ang++;
|
martin@9
|
339 }
|
martin@7
|
340
|
martin@9
|
341 //Right Polar
|
martin@9
|
342 CColor blueColor = CColor(0,0,255,255);
|
martin@9
|
343 ang = 0;
|
martin@9
|
344 while (ang<360) {
|
martin@9
|
345 radius = 1.4017195157709*fabs(0.28204229*(1/sqrt(2.0)) +0.24758662*(cos(ang/180.0*M_PI)) -0.18792311*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
346
|
martin@9
|
347 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
348 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
349
|
martin@9
|
350 context->beginDraw();
|
martin@9
|
351 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
352 context->drawPoint(point, blueColor);
|
martin@9
|
353 context->endDraw();
|
martin@9
|
354
|
martin@9
|
355 ang++;
|
martin@9
|
356 }
|
martin@9
|
357
|
martin@9
|
358
|
martin@9
|
359 //SL Polar Pattern
|
martin@9
|
360 CColor greenColor = CColor(0,255,0,255);
|
martin@9
|
361 ang = 0;
|
martin@9
|
362 while (ang<360) {
|
martin@9
|
363 radius = 1.40171951577099*fabs(0.44947336*(1/sqrt(2.0)) -0.23381746*(cos(ang/180.0*M_PI)) +0.31911519*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
364
|
martin@9
|
365 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
366 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
367
|
martin@9
|
368 context->beginDraw();
|
martin@9
|
369 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
370 context->drawPoint(point, greenColor);
|
martin@9
|
371 context->endDraw();
|
martin@9
|
372
|
martin@9
|
373 ang++;
|
martin@9
|
374 }
|
martin@9
|
375
|
martin@9
|
376 //SR Polar Pattern
|
martin@9
|
377 CColor brownColor = CColor(139,69,19,255);
|
martin@9
|
378 ang = 0;
|
martin@9
|
379 while (ang<360) {
|
martin@9
|
380 radius = 1.4017195157709*fabs(0.44945895*(1/sqrt(2.0)) -0.23380219*(cos(ang/180.0*M_PI)) -0.31911386*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
381
|
martin@9
|
382 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
383 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
384
|
martin@9
|
385 context->beginDraw();
|
martin@9
|
386 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
387 context->drawPoint(point, brownColor);
|
martin@9
|
388 context->endDraw();
|
martin@9
|
389
|
martin@9
|
390 ang++;
|
martin@9
|
391 }
|
martin@9
|
392
|
martin@9
|
393 //C Polar Pattern
|
martin@9
|
394 CColor yellowColor = CColor(255,215,0,255);
|
martin@9
|
395 ang = 0;
|
martin@9
|
396 while (ang<360) {
|
martin@9
|
397 radius = 1.4017195157709*fabs(-0.04881270*(1/sqrt(2.0)) -0.02756928*(cos(ang/180.0*M_PI)) +0.00001724*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
398
|
martin@9
|
399 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
400 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
401
|
martin@9
|
402 context->beginDraw();
|
martin@9
|
403 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
404 context->drawPoint(point, yellowColor);
|
martin@9
|
405 context->endDraw();
|
martin@9
|
406
|
martin@9
|
407 ang++;
|
martin@9
|
408 }
|
martin@9
|
409 };
|
martin@9
|
410
|
martin@9
|
411
|
martin@9
|
412 void polarPlot::heller2Pattern(VSTGUI::CDrawContext *context)
|
martin@9
|
413 {
|
martin@9
|
414 double radius, x, y;
|
martin@9
|
415 int ang = 0;
|
martin@9
|
416
|
martin@9
|
417 //Left Polar
|
martin@9
|
418 CColor redColor = CColor(255,0,0,255);
|
martin@9
|
419 while (ang<360) {
|
martin@9
|
420 radius = 1.38921598327229*fabs(0.21426224*(1/sqrt(2.0)) +0.19218459*(cos(ang/180.0*M_PI)) +0.20409261*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
421
|
martin@9
|
422 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
423 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
424
|
martin@9
|
425 context->beginDraw();
|
martin@9
|
426 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
427 context->drawPoint(point, redColor);
|
martin@9
|
428 context->endDraw();
|
martin@9
|
429
|
martin@9
|
430 ang++;
|
martin@9
|
431 }
|
martin@9
|
432
|
martin@9
|
433 //Right Polar
|
martin@9
|
434 CColor blueColor = CColor(0,0,255,255);
|
martin@9
|
435 ang = 0;
|
martin@9
|
436 while (ang<360) {
|
martin@9
|
437 radius = 1.38921598327229*fabs(0.21426400*(1/sqrt(2.0)) +0.19218379*(cos(ang/180.0*M_PI)) -0.20409362*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
438
|
martin@9
|
439 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
440 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
441
|
martin@9
|
442 context->beginDraw();
|
martin@9
|
443 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
444 context->drawPoint(point, blueColor);
|
martin@9
|
445 context->endDraw();
|
martin@9
|
446
|
martin@9
|
447 ang++;
|
martin@9
|
448 }
|
martin@9
|
449
|
martin@9
|
450
|
martin@9
|
451 //SL Polar Pattern
|
martin@9
|
452 CColor greenColor = CColor(0,255,0,255);
|
martin@9
|
453 ang = 0;
|
martin@9
|
454 while (ang<360) {
|
martin@9
|
455 radius = 1.38921598327229*fabs(0.44287748*(1/sqrt(2.0)) -0.27006948*(cos(ang/180.0*M_PI)) +0.30405695*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
456
|
martin@9
|
457 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
458 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
459
|
martin@9
|
460 context->beginDraw();
|
martin@9
|
461 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
462 context->drawPoint(point, greenColor);
|
martin@9
|
463 context->endDraw();
|
martin@9
|
464
|
martin@9
|
465 ang++;
|
martin@9
|
466 }
|
martin@9
|
467
|
martin@9
|
468 //SR Polar Pattern
|
martin@9
|
469 CColor brownColor = CColor(139,69,19,255);
|
martin@9
|
470 ang = 0;
|
martin@9
|
471 while (ang<360) {
|
martin@9
|
472 radius = 1.38921598327229*fabs(0.44287676*(1/sqrt(2.0)) -0.27006941*(cos(ang/180.0*M_PI)) -0.30405595*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
473
|
martin@9
|
474 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
475 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
476
|
martin@9
|
477 context->beginDraw();
|
martin@9
|
478 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
479 context->drawPoint(point, brownColor);
|
martin@9
|
480 context->endDraw();
|
martin@9
|
481
|
martin@9
|
482 ang++;
|
martin@9
|
483 }
|
martin@9
|
484
|
martin@9
|
485 //C Polar Pattern
|
martin@9
|
486 CColor yellowColor = CColor(255,215,0,255);
|
martin@9
|
487 ang = 0;
|
martin@9
|
488 while (ang<360) {
|
martin@9
|
489 radius = 1.38921598327229*fabs(0.09993309*(1/sqrt(2.0)) +0.15577050*(cos(ang/180.0*M_PI)) +0.00000000*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8;
|
martin@9
|
490
|
martin@9
|
491 x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius);
|
martin@9
|
492 y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius);
|
martin@9
|
493
|
martin@9
|
494 context->beginDraw();
|
martin@9
|
495 CPoint point = CPoint((int)x, (int)y);
|
martin@9
|
496 context->drawPoint(point, yellowColor);
|
martin@9
|
497 context->endDraw();
|
martin@9
|
498
|
martin@9
|
499 ang++;
|
martin@9
|
500 }
|
martin@9
|
501 };
|
martin@9
|
502
|