Simulation geometrique d'une conjecture

Soyez le premier à donner votre avis sur cette source.

Vue 14 533 fois - Téléchargée 467 fois

Description

C'est un programme que j'ai construit parce que je voudrais vérifier une conjecture que je me suis mise en tête depuis un certain moment (appellons-là la conjecture du Chocapic)
On considère quatre points de l'espace qui ne forment pas un parallélogramme
On construit de nouveaux points de l'espace de la façon suivante : on en prend trois déjà construits, et on créé les 3 autres points qui forment des parallélogrammes avec eux.
ex :

On part de ça
..o..
o..o

On arrive à ça
x..o..x
..o..o..
....x....

(J'ai mis des points parce que les espaces passent pas)

Et on réitère le procédé pour tous les points que l'on a créé.
La question est : est-ce que l'ensemble des points obtenus tend vers l'espace quand on effectue l'opération de plus en plus de fois ?
Je dirais oui, comme ça, mais en fait j'en sais rien.
C'est pour ça que j'ai construit ce programme :)
Niveau programmation, c'est pas nul, mais ça n'a absolument aucun intêret (enfin si, la création de tableaux de contrôles dynamiques mais c'est tout).

Conclusion :


Il y a dans ce code une fonction qui ne sert pas au programme, elle permet de savoir si quatre points forment un parallélogramme. Elle peut toujours servir à d'autres.
Et j'ai deux questions, je vais les poster dans le forum, mais comme tout le monde ne regarde pas le forum...
1 - Y a t-il moyen de charger un objet comme je le fais dans ce programme, de sorte qu'il ait, dès sa création, la propriété Visible à True ? Apparement, elle est automatiquement mise à False, ça prend du temps sur la boucle
2 - Ensuite, j'ai remarqué que lors de la boucle où je créé les points, plusieurs points sont confondus, parce qu'il appartiennent à différents parallélogrammes en même temps. J'aimerais régler ce problème de points calculés deux fois, ça prend beaucoup de mémoire et tout et tout, mais je vois pas trop comment. A visses à la population...
      • UTILISATION ***

Vous cliquez sur Distribuer quand le programme est lancé. Les quatre points créés vont se disperser vers le centre.
Cliquer sur Calculer. A chaque clic, vous avancez d'une étape dans le calcul. Mais le fait qu'il y ait de grandes redondances dans le calcul ne m'a pas parmis de cliquer plus de deux fois ^^
Pas de bouton arrêter. Donc pour quitter le programme, faites Ctrl-Attn, puis quittez l'exécution. Sinon vous pouvez toujours le fermer normalement mais il y a un petit message d'erreur qui s'affiche...

On voit apparaîtres des alignements, bien jolis par ailleurs, mais tant que le programme ne passe pas au moins à la 3-4e itération, je sais pas si on peut dire grand-chose quant à la conjecture du Chocapic...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
20 avril 2005 à 14:03
Je serais toi je n'utiliserait pas la création dynamique pour un faire cela

je me dirigerait plutôt vers une methode de dessin. Je m'explique : tu crée une structure avec la position du point (encore mieux créer un module de classe mais on complique pour pas grand chose), tu crée un tableau de cette structure tu fait tout tes calculs et quand t'as finit tu dessine sur ta feuille tout tes points. je te conseil d'utiliser Get/SetDIBits qui sont beaucoup plus rapide.

Pour ne pas avoir plusieur fois le même point ce que je ferait personnellement, je dessinerai l'image en même temps que je calcul et en verifiant si l'image est noir a la coordonnée X Y tu c si il existe un point.

en gros, tu joue avec un tableau de points, appelon le A, et un tableau qui represente ton dessin. Quand tu crée un nouveau point, tu verifie si B(X, Y) est false ou pas, si oui tu rajoute le point (X,Y) dans ton tableau A et tu met un point noir a la bonne position dans B.
Quand t'as fini tu passe B à SetDIBitsToDevice.

Pour plus d'info sur SetDIBitsToDevice : http://www.mentalis.org/apilist/SetDIBitsToDevice.shtml
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
20 avril 2005 à 18:06
Justement j'y pensais cet aprem, c'est vrai que c'est complètement inutile de faire ça avec des contrôles, mais bon...
Je balancerais prochainement la version dessin.
Puis pour la vérification de la couleur avant le dessin, pourquoi pas... Mais je sais pas si ça raccourcit vraiment, car on rajoute à chaque fois un appel à la fonction qui récupère la couleur. Je verrai bien.
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
20 avril 2005 à 18:44
non non...pas en utilisant de getpixel...
SetDiBitTodevice te permet de doner un tableau en paramètre et d'afficher ton tableau..dc tu n'as qu'un seul appel pour tout ton algorithme au lieu de dessiner un point a chaque itération...
cs_Pingouin Messages postés 262 Date d'inscription lundi 26 août 2002 Statut Membre Dernière intervention 24 août 2005
20 avril 2005 à 22:29
Pensez pas la réponse à la conjecture du chocapic est 'oui' etant donné kon peut paver le plan avec des parallélogrammes ? Bon c'est sur ya ptet une limitation avec le procédé de construction mais je ne vois pas pkoi... Enfin je dis ca j'sais po mais bon. Qu'en pensez vous ?

@+

Pingouin
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
21 avril 2005 à 00:28
Enf ait la premiere fois que j'ai lu la source ça me parraissait trop simple... je devais avoir louper un episode du developpement.

Reprenez moi si je me trompe :
Si on reprend l'exemple de Saros :
..o..
o..o

on peux propager vers la droite par exemple et on a :
..o..o..o..o
o..o..o..o..o

on remarque que la forme de départ se repete (logique quand on c que ce sont des parralélogramme). On peut faire la même chose dans un autre "sens" vers le haut par exemple. ce qui fait qu'on peut remplir l'espace selon 2 axes. vu que les figures se repete on peut, en repetant l'operation sur les autres points en suivant une direction remplir tout l'espace.

on peut propager dans un troisieme sens vu qu'on a 3 point de départ (voir exemple) ce qui veux dire que si on se trouve dans l'espace on rempli tout l'espace.

pour les matheux a peu de chose près, on peux considéré qu'on a la base d'un espace vectoriel. Si on a 2 vecteur lineairement independant on rempli R² si on en a 3 on rempli R³

PS : Si les 3 point sont coplanaire, tu ne sauras pas remplir l'espace.De même si tes points sont alignés tu ne saura pas remplir ton plan. C'est la seul limitation geometrique que je vois...

J'espere que j'ai bien compris la conjecture chocapic ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.