From bf121f31634bc79ac442af7a0a92dd501bbccb32 Mon Sep 17 00:00:00 2001
From: Boris Stefanovic <owldev@bluewin.ch>
Date: Thu, 28 Apr 2022 12:05:25 +0200
Subject: [PATCH] IMPORT: physics signatures

---
 .gitignore  |  2 +-
 src/field.c | 31 +++++++++++++++++++++++++++++++
 src/field.h | 33 +++++++++++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 1 deletion(-)
 create mode 100644 src/field.c
 create mode 100644 src/field.h

diff --git a/.gitignore b/.gitignore
index d5fc8a5..ad64b2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
 .idea
 build
 *.o
-doc/*.pdf
+*.pdf
diff --git a/src/field.c b/src/field.c
new file mode 100644
index 0000000..8bff078
--- /dev/null
+++ b/src/field.c
@@ -0,0 +1,31 @@
+#include "physics.h"
+#include <math.h>
+#include <stdlib.h>
+
+
+// Compute E*qP/norm(qP)
+// Return false if norm(qP) < eps
+bool compute_e(charge_t c, vec2 p, double eps, vec2 *e){
+ return EXIT_SUCCESS;
+}
+
+// Compute the normalized sum of Ei*qiP/norm(qiP)
+// Return false if for some qiP, norm(qiP) < eps
+bool compute_total_normalized_e(charge_t *charges, int num_charges, vec2 p, double eps, vec2 *e){
+ return EXIT_SUCCESS;
+}
+
+// Compute and then draw all the points belonging to a field line,
+// starting from pos0.
+// Returns false if pos0 is not a valid position
+// (for example if pos0 is too close to a charge).
+static bool draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vec2 pos0, double x0, double x1, double y0, double y1){
+ return EXIT_SUCCESS;
+}
+
+// Draw all the charges
+// A circle with minus sign for negative charges
+// A circle with a plus sign for positive charges
+static void draw_charges(struct gfx_context_t *context, charge_t *charges, int num_charges, double x0, double x1, double y0, double y1){
+
+}
diff --git a/src/field.h b/src/field.h
new file mode 100644
index 0000000..8c1a162
--- /dev/null
+++ b/src/field.h
@@ -0,0 +1,33 @@
+#ifndef _PHYSIQUE_H_
+#define _PHYSIQUE_H_
+#include "../utils/vec2/vec2.h"
+#include "../utils/gfx/gfx.h"
+#include "../utils/utils.h"
+#include <stdio.h>
+
+typedef struct charge_t
+{
+    double q;
+    vec2 pos;
+} charge;
+
+// Compute E*qP/norm(qP)
+// Return false if norm(qP) < eps
+bool compute_e(charge_t c, vec2 p, double eps, vec2 *e);
+
+// Compute the normalized sum of Ei*qiP/norm(qiP)
+// Return false if for some qiP, norm(qiP) < eps
+bool compute_total_normalized_e(charge_t *charges, int num_charges, vec2 p, double eps, vec2 *e);
+
+// Compute and then draw all the points belonging to a field line,
+// starting from pos0.
+// Returns false if pos0 is not a valid position
+// (for example if pos0 is too close to a charge).
+static bool draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vec2 pos0, double x0, double x1, double y0, double y1);
+
+// Draw all the charges
+// A circle with minus sign for negative charges
+// A circle with a plus sign for positive charges
+static void draw_charges(struct gfx_context_t *context, charge_t *charges, int num_charges, double x0, double x1, double y0, double y1);
+
+#endif
-- 
GitLab