some fixes to fillRect

This commit is contained in:
Alexandre 2024-08-28 15:28:59 +02:00
parent 0a61e13d9d
commit ac059b3f74
13 changed files with 49 additions and 17 deletions

BIN
bin/back

Binary file not shown.

BIN
obj/base.o Normal file

Binary file not shown.

BIN
obj/display.o Normal file

Binary file not shown.

BIN
obj/generation.o Normal file

Binary file not shown.

BIN
obj/hash.o Normal file

Binary file not shown.

BIN
obj/main.o Normal file

Binary file not shown.

BIN
obj/move.o Normal file

Binary file not shown.

View File

@ -56,6 +56,20 @@ int max(int a, int b) {
return a;
}
double min_db(double a, double b) {
if(a > b) {
return b;
};
return a;
}
double max_db(double a, double b) {
if(a < b) {
return b;
};
return a;
}
int sign(int n) {
if(n < 0) {
return (-1);

View File

@ -11,6 +11,10 @@ int min(int a, int b);
int max(int a, int b);
double min_db(double a, double b);
double max_db(double a, double b);
int sign(int n);
double absf(double n);

View File

@ -168,6 +168,8 @@ bool isPtInPoly(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4,
return (sign(v1) == sign(v2) && sign(v2) == sign(v3) && sign(v3) == sign(v4));
}
static int total ;
void fillQuadPoly(SDL_Renderer* renderer, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) {
int ymin = min(min(y1, y2), min(y3, y4));
int ymax = max(max(y1, y2), max(y3, y4));
@ -180,6 +182,15 @@ void fillQuadPoly(SDL_Renderer* renderer, int x1, int y1, int x2, int y2, int x3
}
}
};
/*double step = max_db(distance_pt(x1, y1, x2, y2), distance_pt(x3, y3, x4, y4));
double theta = 0.0 ;
while(theta <= 1.0) {
total += 1 ;
drawLineWithThicc(renderer, 2, convex_seg(x1, x2, theta), convex_seg(x4, x3, theta), convex_seg(y1, y2, theta), convex_seg(y4, y3, theta), 255, 192, 255, SDL_ALPHA_OPAQUE);
theta += 1.0 / step;
}*/
/*total += (ymax-ymin)*(xmax-xmin) ;
printf("T = %d\n", total);*/
drawLineWithThicc(renderer, 2, x1, x2, y1, y2, 32, 32, 32, SDL_ALPHA_OPAQUE);
drawLineWithThicc(renderer, 2, x2, x3, y2, y3, 32, 32, 32, SDL_ALPHA_OPAQUE);
drawLineWithThicc(renderer, 2, x3, x4, y3, y4, 32, 32, 32, SDL_ALPHA_OPAQUE);
@ -250,7 +261,6 @@ void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int
fprintf(stderr, "NO (%d, %d)\n", chx, chy);
exit(1);
};
drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true);
if(distx != render_distance -1 && !gridMem(map, chx+1, chy)) {
generate_chunk_all(chx+1, chy);
@ -287,7 +297,7 @@ void drawMapToRendererV2(SDL_Renderer* renderer, int xmin, int xmax, int ymin, i
chunk* todraw = gridGet(map, player_cx+sorted_x[i], player_cy + sorted_y[i]) ;
//drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true);
drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true);
drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, false);
}
placeRectToRenderer(renderer, __width__ /2 - 5*zoom/100, __height__ /2 - 5*zoom/100, 10*zoom/100, 10*zoom/100, 255, 255, 32, SDL_ALPHA_OPAQUE);

View File

@ -24,7 +24,7 @@ template* configs ;
array** matches ;
int n_configs = 18;
int render_distance = 2 ;
int render_distance = 4 ;
int player_x = 4;
int player_y = 4;
@ -42,6 +42,7 @@ imgs digits ;
imgs letters ;
template full ;
template empty ;
int* sorted_x ;
int* sorted_y ;
@ -170,17 +171,6 @@ void signature(template t) {
printf("[WEST] %d\n\n", t.westsig);
}
bool is_compat_with_spins(int cx, int cy, int idx) {
for(int k = 0; k < 4; k++) {
if(is_compat_sig_north(cx, cy, idx) && is_compat_sig_east(cx, cy, idx) && is_compat_sig_south(cx, cy, idx) && is_compat_sig_west(cx, cy, idx)) {
return true ;
} else {
rotateTemplateClockWise(idx);
}
};
return false;
}
bool is_compat_with_spins_uno(int cx, int cy, int idx) {
if(is_compat_sig_north(cx, cy, idx) && is_compat_sig_east(cx, cy, idx) && is_compat_sig_south(cx, cy, idx) && is_compat_sig_west(cx, cy, idx)) {
return true ;
@ -237,11 +227,21 @@ void initialize(SDL_Renderer* renderer) {
import_digits(renderer);
full.lines = malloc(sizeof(uint8_t)*8);
full.eastsig = 255 ;
full.westsig = 255 ;
for(int i = 0; i < 8; i++) {
full.lines[i] = 255 ;
};
full.id = -1 ;
empty.lines = malloc(sizeof(uint8_t)*8);
empty.eastsig = 0 ;
empty.westsig = 0 ;
for(int i = 0; i < 8; i++) {
empty.lines[i] = 0 ;
};
empty.id = -2 ;
int xys = pw(2*render_distance+1, 2);
sorted_x = malloc(sizeof(int)*xys);
sorted_y = malloc(sizeof(int)*xys);
@ -284,6 +284,7 @@ void destroy() {
free_digits(letters);
free(full.lines);
free(empty.lines);
free(sorted_x);
free(sorted_y);

View File

@ -176,8 +176,8 @@ void moveFunctionMaster(SDL_Renderer* renderer) {
while(!halt) {
moveControl(&halt);
resetRenderer(renderer);
//drawMapToRenderer(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)));
drawMapToRendererV2(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)));
drawMapToRenderer(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)));
//drawMapToRendererV2(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)));
drawNumberToRenderer(renderer, digits, player_cx, 10, 10, 50, 70, 0);
drawNumberToRenderer(renderer, digits, player_cy, 10, 80, 50, 70, 0);
drawNumberToRenderer(renderer, digits, player_x, __width__ / 3, 10, 50, 70, 0);
@ -185,7 +185,8 @@ void moveFunctionMaster(SDL_Renderer* renderer) {
drawNumberToRenderer(renderer, digits, to_int(εx*100), 2 * __width__ / 3, 10, 50, 70, 0);
drawNumberToRenderer(renderer, digits, to_int(εy*100), 2 * __width__ / 3, 80, 50, 70, 0);
updateRenderer(renderer);
//exit(1);
draw_par += 1 ;
usleep(20000);
//usleep(20000);
}
}

View File

@ -47,6 +47,8 @@ extern imgs letters ;
extern template full ;
extern template empty ;
extern int* sorted_x ;
extern int* sorted_y ;