From 426c5804bf0a15801612ed8ffa403b0a22611888 Mon Sep 17 00:00:00 2001 From: JM <crewgan@pop-os.localdomain> Date: Fri, 13 May 2022 21:59:13 +0200 Subject: [PATCH] Affichage des charges --- src/draw.c | 16 ++++++++-------- src/field.c | 21 +++++++++++---------- src/field.h | 4 ++++ src/main.c | 14 +++++++------- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/draw.c b/src/draw.c index 83194fe..2fc3b62 100644 --- a/src/draw.c +++ b/src/draw.c @@ -37,14 +37,14 @@ void gfx_draw_circle(struct gfx_context_t *ctxt, coordinates c, uint32_t r, uint int y = r; int d = r - 1; while(y >= x){ - gfx_putpixel(ctxt, c.row + x, c.column + y, color); - gfx_putpixel(ctxt, c.row + y, c.column + x, color); - gfx_putpixel(ctxt, c.row - x, c.column + y, color); - gfx_putpixel(ctxt, c.row - y, c.column + x, color); - gfx_putpixel(ctxt, c.row + x, c.column - y, color); - gfx_putpixel(ctxt, c.row + y, c.column - x, color); - gfx_putpixel(ctxt, c.row - x, c.column - y, color); - gfx_putpixel(ctxt, c.row - y, c.column - x, color); + gfx_putpixel(ctxt, c.column + x, c.row + y, color); + gfx_putpixel(ctxt, c.column + y, c.row + x, color); + gfx_putpixel(ctxt, c.column - x, c.row + y, color); + gfx_putpixel(ctxt, c.column - y, c.row + x, color); + gfx_putpixel(ctxt, c.column + x, c.row - y, color); + gfx_putpixel(ctxt, c.column + y, c.row - x, color); + gfx_putpixel(ctxt, c.column - x, c.row - y, color); + gfx_putpixel(ctxt, c.column - y, c.row - x, color); if(d >= 2*x){ d = d-2*x-1; x++; diff --git a/src/field.c b/src/field.c index 05a9a9f..2c18ef9 100644 --- a/src/field.c +++ b/src/field.c @@ -57,22 +57,23 @@ bool draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_char void draw_charges(struct gfx_context_t *context, charge_t *charges, int num_charges, double x0, double x1, double y0, double y1) { for (int i = 0; i < num_charges; i++) { - coordinates_t charge_center = position_to_coordinates(CHARGE_R, CHARGE_R, x0, x1, y0, y1, charges[i].pos); + coordinates_t charge_center = position_to_coordinates(WID, HEI, x0, x1, y0, y1, charges[i].pos); gfx_draw_circle(context, charge_center, CHARGE_R, COLOR_WHITE); - coordinates_t sign_dst; + coordinates_t sign_src = charge_center; + coordinates_t sign_dst = charge_center; uint32_t sign_color = COLOR_RED; if (charges[i].q > 0){ sign_color = COLOR_BLUE; - sign_dst.row = charge_center.row + SIGN_SIZE; - gfx_draw_line(context, charge_center, sign_dst, sign_color); - sign_dst.row = charge_center.row - SIGN_SIZE; - gfx_draw_line(context, charge_center, sign_dst, sign_color); + sign_src.row -= SIGN_SIZE; + sign_dst.row += SIGN_SIZE; + gfx_draw_line(context, sign_src, sign_dst, sign_color); + sign_src.row = charge_center.row; + sign_dst.row = charge_center.row; } - sign_dst.column = charge_center.column + SIGN_SIZE; - gfx_draw_line(context, charge_center, sign_dst, sign_color); - sign_dst.column = charge_center.column - SIGN_SIZE; - gfx_draw_line(context, charge_center, sign_dst, sign_color); + sign_src.column -= SIGN_SIZE; + sign_dst.column += SIGN_SIZE; + gfx_draw_line(context, sign_src, sign_dst, sign_color); } } diff --git a/src/field.h b/src/field.h index 267474b..982c4fd 100644 --- a/src/field.h +++ b/src/field.h @@ -6,6 +6,10 @@ #include "../utils/utils.h" #include <stdio.h> +#define SIDE_LEN 1000 +#define WID SIDE_LEN +#define HEI WID + // Compute E*qP/norm(qP) // Return false if norm(qP) < eps bool compute_e(charge_t c, vec2 p, double eps, vec2 *e); diff --git a/src/main.c b/src/main.c index 92bf434..0dfb863 100644 --- a/src/main.c +++ b/src/main.c @@ -4,9 +4,6 @@ #include "../utils/utils.h" #include "field.h" -#define SIDE_LEN 1000 -#define WID SIDE_LEN -#define HEI WID #define NCHARGES 2 #define DX 0.0005 #define NPOINTS 32 @@ -18,11 +15,14 @@ int main() { {.q=0.25, .pos=vec2_create(0.75, 0.5)}, }; struct gfx_context_t *ctxt = gfx_create("elec", WID, HEI); + draw_charges(ctxt, charges, NCHARGES, 0.0, 1.0, 0.0, 1.0); - for (int i = 0; i < NPOINTS; ++i) { - vec2 start = vec2_normalize(vec2_create(rand(), rand())); - draw_field_line(ctxt, charges, NCHARGES, DX, start, 0.0, 1.0, 0.0, 1.0); - } + + //for (int i = 0; i < NPOINTS; ++i) { + // vec2 start = vec2_normalize(vec2_create(rand(), rand())); + // draw_field_line(ctxt, charges, NCHARGES, DX, start, 0.0, 1.0, 0.0, 1.0); + //} + while (gfx_keypressed() != SDLK_ESCAPE) gfx_present(ctxt); gfx_destroy(ctxt); return EXIT_SUCCESS; -- GitLab