010
01.09.2003, 12:17 Uhr
virtual
Sexiest Bit alive (Operator)
|
Ich war jetzt zu faul zum testen, aber die Idee dürfte klar werden:
C++: |
void filter(int* data, int x, int y) { if (0==x || 0==y) return;
// // Init temp buffer // int ints_per_line = (x+2); int bytes_per_line = ints_per_line*sizeof(int); int* buffer = new int[3*ints_per_line]; memset(buffer, 0, 3*bytes_per_line); memcpy(buffer+1, data, sizeof(int)*x);
// // Loop for each line // for(int i=0; i<y; ++i) { int y1 = (i+2)%3; int y2 = i%3; int y3 = (i+1)%3;
// // Aktualisiere tmp. buffer // if (i+1!=y) memcpy(buffer+1+ints_per_line*y3, data+x, sizeof(int)*x); else memset(buffer+1+ints_per_line*y3, 0, sizeof(int)*x);
// // Transform // int* s = buffer; for(int j=0; j<x; ++j, s++) *data++ = s[y1*ints_per_line]+s[2+y1*ints_per_line] -4*s[1+y2*ints_per_line] +s[y3*ints_per_line]+s[2+y3*ints_per_line]; }
delete [] buffer; }
|
Möglicherweise tuts ja nach entfernen der obligatorischen Bugs -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |