From 5b006cbf7e1ad0bcf4e9ad7f91b22ac94a79a6b3 Mon Sep 17 00:00:00 2001 From: "tanguy.cavagna" <tanguy.cavagna@etu.hesge.ch> Date: Fri, 22 Apr 2022 18:52:33 +0200 Subject: [PATCH] Added left click for + charge and right click for - charge & better random q --- charge/charge.c | 4 ++++ charge/charge.h | 8 ++++++++ main.c | 11 ++++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/charge/charge.c b/charge/charge.c index d76e454..42e91b6 100644 --- a/charge/charge.c +++ b/charge/charge.c @@ -69,4 +69,8 @@ bool compute_p_next(charge_t *charges, int num_charges, double eps, charge_t charge_create(double q, vec2 pos) { charge_t c = {.q = q, .pos = pos}; return c; +} + +double random_charge_q(bool positive) { + return rand_one() * (positive ? 1 : -1); } \ No newline at end of file diff --git a/charge/charge.h b/charge/charge.h index ba6a607..1f83437 100644 --- a/charge/charge.h +++ b/charge/charge.h @@ -109,4 +109,12 @@ bool compute_p_next(charge_t *charges, int num_charges, double eps, */ charge_t charge_create(double q, vec2 pos); +/** + * @brief Return a random charge q + * + * @param positive + * @return double + */ +double random_charge_q(bool positive); + #endif \ No newline at end of file diff --git a/main.c b/main.c index 415e589..9373cab 100644 --- a/main.c +++ b/main.c @@ -84,13 +84,18 @@ void handle_mouse_input(int button, int state, int x, int y) { if (state == GLUT_UP) return; - if (button == GLUT_LEFT_BUTTON) { + if (button == GLUT_LEFT_BUTTON || button == GLUT_RIGHT_BUTTON) { charge_count += 1; default_charges_pos[charge_count - 1] = vec2_create((double)x / WINDOW_WIDTH, (double)y / WINDOW_HEIGHT); - default_charges[charge_count - 1] = rand_one() / (rand_one() * 10 - 5); } + if (button == GLUT_LEFT_BUTTON) + default_charges[charge_count - 1] = random_charge_q(true); + + if (button == GLUT_RIGHT_BUTTON) + default_charges[charge_count - 1] = random_charge_q(false); + glutPostRedisplay(); } @@ -106,7 +111,7 @@ int main(int argc, char **argv) { // Generate all default charges for (int i = 0; i < charge_count; i++) { - default_charges[i] = rand_one() / (rand_one() * 10 - 5); + default_charges[i] = random_charge_q((bool)(rand() % 2 == 0)); default_charges_pos[i] = vec2_create(rand_one(), rand_one()); } -- GitLab