aboutsummaryrefslogtreecommitdiffstats
path: root/test/scanTest2.c
blob: 1a90bb7b5a26a77633337a259d0867ba51042cec (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <math.h>

#include "libsldj/util.h"

Color lineScanner(uint16_t x, uint16_t y, uint32_t frameNumber)
{
    //uint8_t c = (x >> 8) + (uint8_t)(SLDJ_HYPOT2((x >> 9), (y >> 9)) * (frameNumber % 255));
    //uint8_t c = sin(x * DEG2RAD) * 256;
    //uint8_t c = SLDJ_SIN(x % 360) * 256;

    uint8_t scale = random() % 2 + 7;

    float scaleCos = SLDJ_COS(((int)(x * RAD2DEG) >> scale) % 360);
    float scaleSin = SLDJ_SIN(((int)(y * RAD2DEG) >> scale) % 360);
    
    uint8_t c1 =  (x >> 8) + (uint8_t)(SLDJ_HYPOT2((x >> 8), (y >> 8)) * (frameNumber % 255));
    uint8_t c2 =  (x >> 8) + (uint8_t)(SLDJ_HYPOT2(scaleCos, scaleSin) * (frameNumber % 255));
    uint8_t c3 = frameNumber + SLDJ_HYPOT2(((x - 32768) >> scale), ((y - 32768) >> scale));
    uint8_t c = c1 & c2 & c3;
    
    return (Color){
        .r = c,
        .g = c - 127,
        .b = c,
        .a = 255
    };
}