diff --git a/slides/cours_21.md b/slides/cours_21.md index 94f4d3ef6868c6ee6806f26f98ac22b06e33164f..dbf1debb7166742f513d7fdb3813d974a8635ad1 100644 --- a/slides/cours_21.md +++ b/slides/cours_21.md @@ -813,26 +813,14 @@ Pour calculer la force sur un corps `c`, on parcourt l'arbre en commençant par ```C rien maj_force_sur_etoile(arbre, e, theta) - si est_vide(arbre) ou !existe(e) + si est_vide(arbre) retourne - if (!n || !p) { - return; - } - // if the node is a leaf and contains a particle which and the particle is not - // in the bounding box of the node (this means that we are at a particle on - // a different leaf). - if (node_is_leaf(n) && !node_is_empty(n) && !is_inside(n->b, p->pos)) { - update_acceleration(p, n->p); - } - // else if the node is far enough of the particle - else if (node_is_far_enough(n, p, theta)) { - update_acceleration(p, n->super_p); - } - else { // else just update the acceleration recurively - for (int i = 0; i < 4; ++i) { - update_acceleration_from_node_on_particle(n->children[i], p, theta); - } - } -} + si est_feuille(arbre) && contient_etoile(n) && dans_le_quadrant(arbre.q, e.x) + maj_force(e, arbre.e) + sinon si noed_assez_loin(arbre, e, theta) + maj_force(e, arbre.sup_etoile) + sinon + pour enfant dans enfants + maj_force_sur_etoile(enfant, e, theta) ```