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