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