Junichi Katsu
/
BLE_MPU6050_test6_challenge_sb
テスト用です。
pictLIB/pictLIB.cpp@0:8468a4403fea, 2016-10-11 (annotated)
- Committer:
- jksoft
- Date:
- Tue Oct 11 11:09:42 2016 +0000
- Revision:
- 0:8468a4403fea
SB??ver;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jksoft | 0:8468a4403fea | 1 | #include "mbed.h" |
jksoft | 0:8468a4403fea | 2 | #include "pictLIB.h" |
jksoft | 0:8468a4403fea | 3 | |
jksoft | 0:8468a4403fea | 4 | PICTLIB::PICTLIB(int _dsp_x,int _dsp_y) |
jksoft | 0:8468a4403fea | 5 | { |
jksoft | 0:8468a4403fea | 6 | dsp_x = _dsp_x; |
jksoft | 0:8468a4403fea | 7 | dsp_y = _dsp_y; |
jksoft | 0:8468a4403fea | 8 | dsp_center_x = ((float)dsp_x - 1) / 2.0; |
jksoft | 0:8468a4403fea | 9 | dsp_center_y = ((float)dsp_y - 1) / 2.0; |
jksoft | 0:8468a4403fea | 10 | pi = 3.14159265358979323846; |
jksoft | 0:8468a4403fea | 11 | } |
jksoft | 0:8468a4403fea | 12 | |
jksoft | 0:8468a4403fea | 13 | void PICTLIB::scroll(char* in_pic, char* out_pic) |
jksoft | 0:8468a4403fea | 14 | { |
jksoft | 0:8468a4403fea | 15 | for(int y1 = 0 ; y1 < dsp_y ; y1++) |
jksoft | 0:8468a4403fea | 16 | { |
jksoft | 0:8468a4403fea | 17 | for(int x1 = 0 ; x1 < dsp_x ; x1++) |
jksoft | 0:8468a4403fea | 18 | { |
jksoft | 0:8468a4403fea | 19 | int y2 = y1+1; |
jksoft | 0:8468a4403fea | 20 | if( y2 >= dsp_y ) y2 -= dsp_y; |
jksoft | 0:8468a4403fea | 21 | out_pic[(y2 * dsp_y) + x1] = in_pic[(y1 *dsp_y) + x1]; |
jksoft | 0:8468a4403fea | 22 | } |
jksoft | 0:8468a4403fea | 23 | } |
jksoft | 0:8468a4403fea | 24 | for(int x1 = 0 ; x1 < dsp_x ; x1++) |
jksoft | 0:8468a4403fea | 25 | { |
jksoft | 0:8468a4403fea | 26 | out_pic[(0 * dsp_y) + x1] = in_pic[((dsp_y-1) *dsp_y) + x1]; |
jksoft | 0:8468a4403fea | 27 | } |
jksoft | 0:8468a4403fea | 28 | } |
jksoft | 0:8468a4403fea | 29 | |
jksoft | 0:8468a4403fea | 30 | void PICTLIB::rotation(float rad, char* in_pic, char* out_pic) |
jksoft | 0:8468a4403fea | 31 | { |
jksoft | 0:8468a4403fea | 32 | rad = rad*(pi/180.0); |
jksoft | 0:8468a4403fea | 33 | |
jksoft | 0:8468a4403fea | 34 | memset( out_pic , 0 , 16*16 ); |
jksoft | 0:8468a4403fea | 35 | |
jksoft | 0:8468a4403fea | 36 | float cos_f = cos(-rad); |
jksoft | 0:8468a4403fea | 37 | float sin_f = sin(-rad); |
jksoft | 0:8468a4403fea | 38 | |
jksoft | 0:8468a4403fea | 39 | for(int y1 = 0 ; y1 < dsp_y ; y1++) |
jksoft | 0:8468a4403fea | 40 | { |
jksoft | 0:8468a4403fea | 41 | for(int x1 = 0 ; x1 < dsp_x ; x1++) |
jksoft | 0:8468a4403fea | 42 | { |
jksoft | 0:8468a4403fea | 43 | float x2f = ((float)x1-dsp_center_x) * cos_f - ((float)y1-dsp_center_y) * sin_f + dsp_center_x; |
jksoft | 0:8468a4403fea | 44 | float y2f = ((float)x1-dsp_center_x) * sin_f + ((float)y1-dsp_center_y) * cos_f + dsp_center_y; |
jksoft | 0:8468a4403fea | 45 | int x2 = (int)(x2f + 0.5); |
jksoft | 0:8468a4403fea | 46 | int y2 = (int)(y2f + 0.5); |
jksoft | 0:8468a4403fea | 47 | |
jksoft | 0:8468a4403fea | 48 | if( x2 >= 0 && x2 < dsp_x && y2 >= 0 && y2 < dsp_y ) { |
jksoft | 0:8468a4403fea | 49 | out_pic[(y2 * dsp_y) + x2] = in_pic[(y1 *dsp_y) + x1]; |
jksoft | 0:8468a4403fea | 50 | } |
jksoft | 0:8468a4403fea | 51 | |
jksoft | 0:8468a4403fea | 52 | } |
jksoft | 0:8468a4403fea | 53 | } |
jksoft | 0:8468a4403fea | 54 | |
jksoft | 0:8468a4403fea | 55 | } |