テスト用です。

Dependencies:   mbed

Committer:
jksoft
Date:
Tue Oct 11 11:09:42 2016 +0000
Revision:
0:8468a4403fea
SB??ver;

Who changed what in which revision?

UserRevisionLine numberNew 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 }