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...
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...
20 avril 2005 à 14:03
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
20 avril 2005 à 18:06
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.
20 avril 2005 à 18:44
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...
20 avril 2005 à 22:29
@+
Pingouin
21 avril 2005 à 00:28
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.