megadrive_test2

annotate tools/tunnel.c @ 4:72ab63f262bf

tiles
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 19 Jun 2017 08:02:51 +0300
parents
children ea70f3da150f
rev   line source
nuclear@4 1 #include <stdio.h>
nuclear@4 2 #include <stdlib.h>
nuclear@4 3 #include <math.h>
nuclear@4 4
nuclear@4 5 #define XSZ 512
nuclear@4 6 #define YSZ 512
nuclear@4 7
nuclear@4 8 int main(void)
nuclear@4 9 {
nuclear@4 10 int i, j;
nuclear@4 11 unsigned char *pixels, *pptr;
nuclear@4 12
nuclear@4 13 pixels = malloc(XSZ * YSZ);
nuclear@4 14 pptr = pixels;
nuclear@4 15
nuclear@4 16 for(i=0; i<YSZ; i++) {
nuclear@4 17 float y = 2.0 * (float)i / (float)YSZ - 1.0;
nuclear@4 18 for(j=0; j<XSZ; j++) {
nuclear@4 19 float x = 2.0 * (float)j / (float)XSZ - 1.0;
nuclear@4 20 float tu = atan2(y, x) / M_PI * 0.5 + 0.5;
nuclear@4 21 float d = sqrt(x * x + y * y);
nuclear@4 22 float tv = d == 0.0 ? 0.0 : 1.0 / d;
nuclear@4 23
nuclear@4 24 int ty = (int)(tv * 64.0) & 0xf;
nuclear@4 25 int tx = (int)(tu * 256.0) & 0xf;
nuclear@4 26
nuclear@4 27 *pptr++ = tx ? ty : 0;
nuclear@4 28 }
nuclear@4 29 }
nuclear@4 30
nuclear@4 31 pptr = pixels;
nuclear@4 32 printf("P6\n%d %d\n15\n", XSZ, YSZ);
nuclear@4 33
nuclear@4 34 for(i=0; i<YSZ; i++) {
nuclear@4 35 for(j=0; j<XSZ; j++) {
nuclear@4 36 unsigned char c = *pptr++;
nuclear@4 37 putchar(c);
nuclear@4 38 putchar(c);
nuclear@4 39 putchar(c);
nuclear@4 40 }
nuclear@4 41 }
nuclear@4 42 fflush(stdout);
nuclear@4 43
nuclear@4 44 return 0;
nuclear@4 45 }