Projection d'un cercle sur un maillage

Bonjour,

J'aimerais sur un maillage pré-défini (exemple 50x50 carré) , projeter une cercle de diamètre D, centré.

Puis colorer / inscrire une valeur dans la cellule suivant la surface d'intersection du cercle par rapport à celle de la cellule (si le ratio: surface du cercle "à l'intérieur de la cellule" / surface cellule <= 50% ==> valeur A; Sinon valeur B.

Cela donnerait ceci (le cercle est en rouge, sa projection en bleu, sur un maillage jaune). Merci d'avance pour vos pistes.

capture d ecran 2024 05 02 182141

Bonjour,

Je me suis penché sur cet exercice que je trouvé très intéressant, seulement après avoir passé plusieurs heures dessus pour cette question de pixellisation des cellules, j'avais bien une idée mais, je n'obtenais pas quelque chose de satisfaisant. Alors j'ai penser à exploiter ChatGpt, je l'ai torturé pendant plus de 3 heures et après plusieurs solutions assez complexes, je n'obtenais toujours pas de résultats satisfaisants et son approche était lourde et difficilement gérable. Alors je lui ai proposé de me fournir un code basé sur mon idée de départ, et on obtient un résultat, bien qu'incomplet et imparfaitmais déjà très satisfaisant et on se rapproche de la solution finale.

Mon idée de départ relativement simple était de dire:

-si une cellule inscrite dans le cercle à ses 4 angles inclus dans ce cercle alors cellule en bleu foncé,

-si une cellule inscrite dans le cercle à au moins 3 angles inclus dans ce cercle alors cellule en bleu clair

-tout autre cas de figure: cellule en jaune

Un petit point concernant l'utilisation de l'AI: Je ne suis pas pour l'utilisation systématique de l'intelligence artificielle, puisque cela empêche de réfléchir mais, dans le cas présent, bien qu'ayant trouvé de mon côté quelques solutions, certes qui ne convenaient pas, il me manquais un petit plus pour aller plus loin. En combinant mes idées et son aide, on arrive à un résultat presque correct, disons acceptable.

Dans le fichier ci-dessous, il suffit de saisir la valeur du rayon du cercle (elle ne doit pas excéder 25)

Le module1 VBA est la solution de CHATGpt,

La partie qui me revient est le dessin et placement du cercle dans le module de la feuille 1

Par manque de temps, je ne peux pas "pour le moment", pousser plus les investigations.

Cdlt

amusant,

pour ces "imparfaits", si on considère le segment de cercle comme un segment de droite avec 2 points d'intersection avec la cellule et le résultat sera un trapèze ou un triangle, alors on n'a qu'à calculer la surface avec du triangle et (en cas d'où) on sait aussi la surface du trapèze avec une petit fonction personnalisée (d'une vingtaine de lignes).

un essai

PS. on peut l'améliorer, mais c'était comme exemple

Bonjour BsAlv,

Autre approche, très beau travail. Bravo.

Cdlt

re, merci, on attend maintenant la réaction de Bambou9 ...

Bonjour,

Merci infiniment pour vos réponses. Elles permettent en effet de satisfaire ma demande.

Néanmoins, j'ai quelques outils / paramètres à rajouter, et détails à expliquer.

Avant tout, je dois travailler dans un système de coordonnées, car le but final de ce document est d'établir un fichier texte pour envoyer dans un logiciel. Le système de coordonnées est impératif car ce logiciel en utilisera un.
Mon but est de positionner un rectangle de la dimension que je souhaite en longueur & largeur (pas forcément centré). De le mailler (par exemple en 20x20). Puis de projeter un cercle sur ce rectangle et d'indiquer pour chaque maillage/cellule, si le cercle "englobe" cette cellule.

Pour tester si ce cercle l'englobe ou pas, on accepte de simplifier en considérant le test suivant: si le centre de la cellule est dans le cercle, alors valeur de la cellule = . Sinon celle ci vaut 0.
Mon idée est maintenant de travailler dans un graphique Excel directement pour bénéficier de ce système de coordonnées et d'y tracer des segments (pour former mon rectangle), et mon cercle. Pensez-vous que cela soit possible ?

Merci encore de votre temps.

re,

oui, c'est possible, mais il manque les détails. Vous voulez le fair vous-même ?

Avec le centre de la cellule, cela est vraiment facile !

Oui j''espère le faire moi-même.

Tout d'abord à la main, mais ensuite en version VBA.

Bien sûr si vous connaissez des façons de tracer efficacement en VBA des segments et cercle dans un graphique, je suis très intéressé.

cela commence avec par exemple les coordinates du rectangle et du cercle

Bonjour,

Grâce à vos différentes idées, j'ai pu faire ce code qui crée un fichier .txt pour appliquer une valeur Va ou (1-Fpct)*Va suivant l'appartenance ou non du maillage du rectangle au cercle.
Merci encore.

PS: mon code est loin d'être "optimal" j'imagine.
Par ailleurs, j'ai une dernière question: comment peut-on appliquer une liste de valeur à chaque élément d'une matrice ? Je veux dire par exemple une matrice "Matrice (i,j) qui correspondrait à chaque maille 20x20 qui contiendrait chacune des 4 coordonnées de cette maille.

Merci!

re,

ce fichier est-il vide ?

Non il n'est pas vide.

Je ne comprends pas.

capture d ecran 2024 05 14 110517

re, j'avais des difficultés pour l'ouvrir, mais maintenant, c'est okay.

Que voulez-vous faire ? une matrice avec les coordinates de toutes les intersections de votre quadrillage horizontal et vertical ?

Je pense que le graphique est un radiateur de 600*500, un cercle avec centre {300;250} et diamètre 558 et je suppose une maille de 30x30 avec au milieu leur centre, mais maintenant vous voulez une maille de 20x20 et vous voulez les coordinates des 4 coins ?

re,

je trouve la solution assez difficile avec un chart, dans une feuille, c'est plus facile, voir PJ.

on ajoute le fan(cercle) et le radiateur(rectangle) et puis un maillage de 30x30 pour l'espace commun + les coins communs pour un maillage de 20x20 dans les colonnes A:B de feuille "Blad2" (mais ne pas encore dans un TXT)

Rechercher des sujets similaires à "projection cercle maillage"