#include "fastmath.hpp" #include "polygon.hpp" #include #include #include #include #include #include #define HIGHT 64 #define WIDTH 64 #define FAA_FAC 2 #define RHIGHT ((int)(HIGHT * FAA_FAC)) #define RWIDTH ((int)(WIDTH * FAA_FAC)) char *drawToString(unsigned short *img) { char *textImg = (char *)malloc(200000 * sizeof(char)); // strcat(textImg,"\e[1;1H\e[2J"); --clear for (int y = 0; y < HIGHT; y++) { for (int x = 0; x < WIDTH; x++) { // printf("%d,%d\n",x,y); char buff[20]; unsigned short val = 0; int my = y * FAA_FAC; int mx = x * FAA_FAC; val += img[my * RWIDTH + mx]; val += img[my * RWIDTH + mx + 1]; val += img[(my + 1) * RWIDTH + mx]; val += img[(my + 1) * RWIDTH + mx + 1]; sprintf(buff, "\033[38;5;%dm██\033[0m", 232 + val / 4); strcat(textImg, buff); } strcat(textImg, "\n"); } return textImg; } void drawImage(unsigned short *img) { decimal heightPerPix = decimal(1.0) / decimal((float)(HIGHT * FAA_FAC)); decimal widthPerPix = decimal(1.0) / decimal((float)(WIDTH * FAA_FAC)); polygon poly = polygon(vec3(0.9, 0.9, 0.0) * decimal(128.0), vec3(0.5, 0.1, 0.0) * decimal(128.0), vec3(0.1, 0.9, 0.0) * decimal(128.0)); // printf("\n hpp: %f, wpp: %f // \n",TO_FLOAT(heightPerPix),TO_FLOAT(widthPerPix)); calcViewPos(t); for (decimal y = 0; y < decimal((float)(RHIGHT)); y += decimal(1.0)) { for (decimal x = 0; x < decimal((float)(RWIDTH)); x += decimal(1.0)) { vec3 p = vec3(x, y, 0.0); if (poly.contains(p)) { img[(y.i >> SHIFT_AMOUNT) * RWIDTH + (x.i >> SHIFT_AMOUNT)] = (unsigned short)23; // (((-normal[1]+(1 << // SHIFT_AMOUNT))*14)>>SHIFT_AMOUNT); } else { img[(y.i >> SHIFT_AMOUNT) * RWIDTH + (x.i >> SHIFT_AMOUNT)] = (unsigned short)0; } } } printf("done writing %d \n", *(img + sizeof(unsigned short) * 32 * 32)); } int main() { unsigned short *img = (unsigned short *)malloc(128 * 128 * sizeof(unsigned short)); while (true) { drawImage(img); printf("%s", drawToString(img)); return 0; // sleep(0.001); } // printf("%s", test); return 0; }