Skip to content
Snippets Groups Projects
Commit d9ec08d2 authored by JM's avatar JM
Browse files

Stop line

parent 63bee7c6
No related branches found
No related tags found
No related merge requests found
...@@ -49,23 +49,30 @@ static bool draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int n ...@@ -49,23 +49,30 @@ static bool draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int n
vec2 pos_sum; vec2 pos_sum;
vec2 pos_next; vec2 pos_next;
vec2 e; vec2 e;
bool stop = false;
double delta = compute_delta_x(); double delta = compute_delta_x();
// Remplacer par une boucle qui s'arrête lorsqu'on atteint une charge // Remplacer par une boucle qui s'arrête lorsqu'on atteint une charge
for (int i = 0; i < 100; i++) uint32_t color = COLOR_YELLOW;
for (int i = 0; i < 100 && !stop; i++)
{ {
compute_total_normalized_e(charges, num_charges, pos, 0.01, &e); for (int j = 0; j < num_charges && !stop; j++){
pos_next.x = pos.x + delta * (e.x / vec2_normalize(e).x); if(vec2_norm(vec2_sub(pos, charges[j].pos)) < dx / HEI){
pos_next.y = pos.y + delta * (e.y / vec2_normalize(e).y); color = COLOR_RED;
stop = true;
}
}
if(!stop){
compute_total_normalized_e(charges, num_charges, pos, 0.01, &e);
pos_next.x = pos.x + delta * (e.x / vec2_normalize(e).x);
pos_next.y = pos.y + delta * (e.y / vec2_normalize(e).y);
//printf("%f + %f * (%f / %f)\n", pos.x, delta, e.x, vec2_normalize(e).x); coordinates_t coordinate_pos = position_to_coordinates(WID, HEI, x0, x1, y0, y1, pos);
//printf("%f %f\n", pos_next.x, pos_next.y); coordinates_t coordinate_pos_next = position_to_coordinates(WID, HEI, x0, x1, y0, y1, pos_next);
coordinates_t coordinate_pos = position_to_coordinates(WID, HEI, x0, x1, y0, y1, pos); gfx_draw_line(ctxt, coordinate_pos, coordinate_pos_next, color);
coordinates_t coordinate_pos_next = position_to_coordinates(WID, HEI, x0, x1, y0, y1, pos_next); pos = pos_next;
//printf("%d %d\n", charge_1.column, charge_1.row); }
//printf("%d %d\n\n", charge_2.column, charge_2.row);
gfx_draw_line(ctxt, coordinate_pos, coordinate_pos_next, COLOR_YELLOW);
pos = pos_next;
} }
return EXIT_SUCCESS; return EXIT_SUCCESS;
...@@ -109,7 +116,7 @@ void draw_everything( ...@@ -109,7 +116,7 @@ void draw_everything(
srand(time(NULL)); srand(time(NULL));
draw_charges(ctxt, charges, num_charges, x0, x1, y0, y1); draw_charges(ctxt, charges, num_charges, x0, x1, y0, y1);
for (int i = 0; i < num_lines; ++i) { for (int i = 0; i < num_lines; ++i) {
vec2 pos0 = vec2_create((double)rand() / RAND_MAX, (double)rand() / RAND_MAX); vec2 pos0 = vec2_create(rand_one(), rand_one());
draw_field_line(ctxt, charges, num_charges, dx, pos0, x0, x1, y0, y1); draw_field_line(ctxt, charges, num_charges, dx, pos0, x0, x1, y0, y1);
} }
} }
...@@ -7,14 +7,14 @@ ...@@ -7,14 +7,14 @@
#include "field.h" #include "field.h"
#define NCHARGES 2 #define NCHARGES 2
#define DX 0.0005 #define DX 25
#define NLINES 32 #define NLINES 32
int main() { int main() {
charge_t charges[NCHARGES] = { charge_t charges[NCHARGES] = {
{.q=-0.25, .pos=vec2_create(0.25, 0.5)}, charge_create(-0.25, vec2_create(0.25, 0.5)),
{.q=0.25, .pos=vec2_create(0.75, 0.5)}, charge_create(0.25, vec2_create(0.75, 0.5))
}; };
struct gfx_context_t *ctxt = gfx_create("elec", WID, HEI); struct gfx_context_t *ctxt = gfx_create("elec", WID, HEI);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment