Salut Mathias!

Tu fais un cours d'algorithmes? Et bien j'ai pensé mettre ton talent et tes nouvelles connaissances à contribution!

Rajout: j'ai trouvé une solution, elle est expliquée . Mais lisez l'énoncé du problème avant!

Je suis en train de clancher sur un programme de traçage de lignes de champ électriques, une commande d'Éric. C'est mon premier programme sérieux de courseware (ça m'absorbe complètement, je dois faire un effort pour ne pas passer mes heures à ce seul projet!)

Là j'ai un petit problème, d'habitude je suis pas mal bon dans ce genre de truc mais si tu pouvais me trouver (sans effort de ma part 8^) une belle solution, j'en serais ravi. C'est l'occasion aussi de te soumettre un défi utile, car l'humanité entière se morfond dans l'attente de mon programme de lignes: tu seras vu comme un sauveur, et sûrement invité à un souper honorifique avec notre premier ministre Jean Chrétien.

Voici:

Supposons que dans la figure suivante (lire aussi la remarque 1) des lignes aient été tracées à partir de la charge A (``à partir de'' signifie que point par point les lignes ont été tracées avec comme départ un point dans l'entourage immédiat de A).

Quatre d'entre elles ont abouti sur la charge B. Supposons aussi que B doit être entouré de 7 lignes de champ: il en manque donc 3. Et ce n'est pas un bug: par exemple des lignes supplémentaires issues de A qui seraient arrivées sur B ont été interrompues parce qu'elle sortaient de la zone de traçage (faut quand même pas se rendre à l'infini).

Il faut donc maintenant tracer 3 lignes de plus autour de B, mais où? La réponse est simple: également réparties sur la circonférence restante (cf figure suivante). Mon problème est que je n'ai pas trouvé rapidement d'algorithme qui, à partir des coordonnées (x,y) du cercle et des points d'arrivée 1 à 4, me donnerait celles des nouveaux points de départ a, b et c.

Vérifie que ta solution s'applique correctement aux secteurs touchés entrants et sortants (longueur d'arc de cercle inférieure et supérieure à la demie-circonférence):

Ainsi qu'à des secteurs qui chevaucheraient l'origine des angles du cercle trigonométrique:

Voilà, j'accepte les soumissions d'algos jusqu'au 24 décembre minuit et il faut avoir 18 ans et plus pour participer!

Remarque 1:

Ne te limite pas au cas particulier de la première figure , qui est d'ailleurs correcte: la charge A possède le triple de la charge B, donc B possède ici toutes ses lignes (j'ai utilisé cette image pour illustrer mon propos, car c'est la seule que j'ai pour le moment, la première, obtenue hier à 23hr).

Imagine un dipôle, où les lignes de A finissent toutes par aboutir à B. Nécessairement des lignes partant vers la gauche sortiront du cadre de la figure, pour réapparaître plus tard à droite et rejoindre B. Cependant, mon programme interrompt ces lignes dès qu'elles atteignent la frontière de la région (je te laisse découvrir pourquoi), la charge B manquera donc de lignes, lignes qu'il faudra continuer en partant (à reculons si c'est une -) de la charge elle-même.

Voici une ``vraie image incomplète'' :

C'est une +6 et une -3, donc celle de droite doit avoir la moitiée de lignes de celle de gauche (qui en a 60). On constate que la charge négative ne possède que 24 lignes: il en manque six... il faudrait la compléter.