diff --git a/src/draw.c b/src/draw.c index 83194fee6c06f4a43439c12c1a31c5f9669ece57..2fc3b62b22a6b4b57133f76885576e5527dba5d0 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 05a9a9fbda981c29daa69f7101482ebe23c30da7..2c18ef902c8c55af83170336fb0ccafbaa603d57 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 267474ba80e1156c9ad61403a1da6b9ad4801173..982c4fd0c0a52f515853269943726a2063dac5f2 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 92bf43403d1cee826d1f5be5fad54bf579cb23e2..0dfb863561b706dac83596f55943e8811238f6f6 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;