some more bugfixes for the DNA-animation

This commit is contained in:
Stefan Kinzel 2014-08-15 00:30:46 +02:00
parent b435b52217
commit 95bd1ba238
2 changed files with 32 additions and 65 deletions

View File

@ -7,11 +7,13 @@
#define HEIGHT 12 #define HEIGHT 12
#define LINE_DISTANCE 4 #define LINE_DISTANCE 4
#define SIN_LENGTH 16 #define SIN_LENGTH 18
#define SIN_MAX 6
// uint8_t sin[SIN_LENGTH] = {0, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 3, 2, 2, 1, 0}; // uint8_t sin[SIN_LENGTH] = {0, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 3, 2, 2, 1, 0};
uint8_t sintab[SIN_LENGTH] = { uint8_t sintab[SIN_LENGTH] = {
0,
1, 1,
2, 2,
3, 3,
@ -28,44 +30,29 @@ uint8_t sintab[SIN_LENGTH] = {
4, 4,
3, 3,
2, 2,
1,
}; };
/*
uint8_t sintab[SIN_LENGTH] = { /**
1, * Shifts the Pixmap one px right
1,
2,
2,
3,
3,
4,
4,
5,
5,
5,
5,
6,
6,
6,
6,
6,
6,
6,
6,
6,
5,
5,
5,
5,
4,
4,
3,
3,
2,
2,
1,
};
*/ */
static void move(){
unsigned char plane, row, byte;
for(plane=0; plane<NUMPLANE; plane++){
for(row=NUM_ROWS; row--;){
for(byte=0; byte < LINEBYTES; byte++){
pixmap[plane][row][byte] = pixmap[plane][row][byte] >> 1;
if(byte < LINEBYTES-1){
pixmap[plane][row][byte] =
pixmap[plane][row][byte] |
(pixmap[plane][row][byte+1] & 0x01) << 7;
}
}
}
}
}
void dna(){ void dna(){
uint8_t mid = NUM_COLS / 2; uint8_t mid = NUM_COLS / 2;
@ -89,24 +76,24 @@ void dna(){
top = mid - sintab[sinpos]; top = mid - sintab[sinpos];
bottom = mid + sintab[sinpos]; bottom = mid + sintab[sinpos];
setpixel((pixel){15,top}, top_color); setpixel((pixel){NUM_COLS-1,top}, top_color);
setpixel((pixel){15,bottom}, bottom_color); setpixel((pixel){NUM_COLS-1,bottom}, bottom_color);
if(draw_line == 0){ if(draw_line == 0){
for(uint8_t linex = top+1; linex < bottom; linex++){ for(uint8_t linex = top+1; linex < bottom; linex++){
setpixel((pixel){15, linex}, 1); setpixel((pixel){NUM_COLS-1, linex}, 1);
} }
setpixel((pixel){15, mid}, 1); setpixel((pixel){NUM_COLS-1, mid}, 1);
} }
if(draw_line == 0){ if(sinpos == 0){
if(top <= 0){ if(mid-SIN_MAX <= 0){
direction = 1; direction = 1;
} }
if(bottom >= NUM_ROWS-1){ if(mid+SIN_MAX >= NUM_ROWS-1){
direction = -1; direction = -1;
} }
mid = mid + (random8() > 240) * direction; mid = mid + (random8() > 200) * direction;
} }
draw_line = (draw_line+1) % LINE_DISTANCE; draw_line = (draw_line+1) % LINE_DISTANCE;
@ -125,22 +112,3 @@ void dna(){
} }
/**
* Shifts the Pixmap one px right
*/
void move(){
unsigned char plane, row, byte;
for(plane=0; plane<NUMPLANE; plane++){
for(row=NUM_ROWS; row--;){
for(byte=0; byte < LINEBYTES; byte++){
pixmap[plane][row][byte] = pixmap[plane][row][byte] >> 1;
if(byte < LINEBYTES-1){
pixmap[plane][row][byte] =
pixmap[plane][row][byte] |
(pixmap[plane][row][byte+1] & 0b00000001) << 7;
}
}
}
}
}

View File

@ -9,6 +9,5 @@
#define DNA_H_ #define DNA_H_
void dna(); void dna();
void move();
#endif /* DNA_H_ */ #endif /* DNA_H_ */