Puzzle et splines...

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: kau

Bonjour,
Je cherche à réaliser un petit logiciel capable de générer aléatoirement des images correspondant à la découpe d'un puzzle.

Bien sur, il s'agit du puzzle classique des familles...
-> Les pièces doivent pouvoir "s'accrocher" les unes aux autres.
La plupart du temps, la courbe de l'interface entre 2 pièces ressemble à un "champignon"...

Le logiciel doit pouvoir faire varier aléatoirement cette courbe pour que chaque pièce soit unique, mais toutes les pièces doivent pouvoir tenir ensemble.


Cela amène donc 2 questions:
1. Quel courbe du plan pourrait convenir?
2. Comment vérifier que les deux pièces reliées par cette courbe "tiennent" ensembles, cad qu'elle s'accrochent?


Pour la 1. J'ai pensé à des courbes de Bézier.
A priori avec un minimum de 7 points on y arrive.
Par exemple avec cette applet:
http://home.nordnet.fr/~jpbaey/tipe...zier_applet.htm

Mais ce n'est pas facile et il faut beaucoup tatonner pour y arriver.
De plus les courbes de Bézier ne passent pas obligatoirement par les points de contrôle, ce qui est pénible... Quelle autre courbe passe par ses points de controle?


Pour la 2. Aucune idée!
Je ne trouve pas de condition mathématique évidente...

A+
Kau

PS. je suis nouveau sur le forum, donc désolé si je ne respecte pas les us et coutumes, par exemple si je n'ai pas posté au bon endroit.



Posted by: izamane95

bonjour
tu peux le poster dans la rubrique "informatique"



Posted by: Flodelarab

T'es pas obligé de faire si compliqué ...
Un triangle suffit.
Tu règleras juste l'abscisse du sommet.

Chaque coté aura une abscisse différente garantissant l'unicité de l'emboitement.



Posted by: kau

Bonjour,
merci pour vos réponses...
Flodelarab: les triangles ne conviennent pas, je souhaite que les pièces tiennent ensemble.
CAD que une fois 2 pièces emboités, si je tire chacune de son coté elle ne bougent pas...
Je voudrait aussi que l'interface ressemble au puzzle de grand-mère, cad des belles courbes en forme de "champignon"... Un critère esthétique quoi!

Petite parenthèse: Tiens, Flodelarab je crois que j'ai lu des commentaires à toi sur le language Anubis ;)
En fait ce petit programme (je l'ai commencé hier) me sert d'exercice/initiation au langage Haskell ;)

izamane95: on peut déplacer la conversation ou c'est trop tard?
Il s'agit bien d'une question mathématique, pas (trop) d'informatique pour l'instant...



Posted by: Flodelarab

Que le monde est petit !

Je me suis vraiment intéressé a ce langage, j'ai participé, j'ai fait un petit programme de stéganographie pour voir, et j'ai abandonné le langage.

Trop de trous dans les outils disponibles.
L'absence de bugs est un leurre énorme.
La différence avec les autres langages, c'est qu'au lieu de te permettre de choisir de traiter ou non les exceptions, il t'oblige à les traiter: perte de temps évidente.


Par contre, le côté "tout est fonction mathématique" me plaisait assez.



Posted by: kau

Ha oui le développeur de ce langage a l'air assez isolé.
Pas facile quand même de se lancer dans un tel chantier!
Et que pense-tu de Haskell?

Sinon personne n'as d'idées pour mes 2 questions de départ?



Posted by: Flodelarab

Citation:
Posté par kau
Ha oui le développeur de ce langage a l'air assez isolé.
Pas facile quand même de se lancer dans un tel chantier!
Et que pense-tu de Haskell?

Sinon personne n'as d'idées pour mes 2 questions de départ?
Pour Haskell, je ne connais pas. D'après ce que je viens de lire, ça semble être un langage parmi tant d'autres.

Pour ton puzzle, je ne comprends pas.
N'importe quel dessin qui fait un crochet fait l'affaire.
Quand à l'unicité de la reconstruction, je n'ai pas le souvenir qu'une seule pièce rentrait dans une seule pièce dans les puzzles de nos grand-meres....

non?



Posted by: kau

Cool! Je crois avoir trouvé ce que je cherche.
Il s'agit des polynômes d'interpolation de Lagrange.
Ils permettent de faire passer une jolie courbe par n points.

Je voudrais rajouter une condition:
Comment pour imposer une tangente à la courbe en certains des points de passage?



Posted by: Flodelarab

Les polynomes d'interpolation de lagrange sont des polynômes comme leur nom l'indique.
Cela signifie 1 x donne 1 y.
Tu n'auras pas ton retour en arrière. toi tu veux une bulle. Pas un dos de chameau.



Posted by: kau

Effectivement!
Mais je pense qu'on peut utiliser les polynômes de Lagrange dans le plan aussi.
Comme pour les courbes de Bézier, mais en remplaçant le polynôme "de Bezier" par celui "de Lagrange" ;)

En bidouillant un peu j'ai obtenu ça avec 4 points:
http://img214.imageshack.us/img214/5540/macourbeir0.jpg

Sympa non?
Maintenant je ne sais pas comment imposer des tangentes...
Remarque j'ai pas encore eu le temps d'y réfléchir



Posted by: Flodelarab

Citation:
Posté par kau
Effectivement!
Mais je pense qu'on peut utiliser les polynômes de Lagrange dans le plan aussi.
Comme pour les courbes de Bézier, mais en remplaçant le polynôme "de Bezier" par celui "de Lagrange" ;)

En bidouillant un peu j'ai obtenu ça avec 4 points:
http://img214.imageshack.us/img214/5540/macourbeir0.jpg

Sympa non?
Maintenant je ne sais pas comment imposer des tangentes...
Remarque j'ai pas encore eu le temps d'y réfléchir

Et pourquoi tu considérerais pas une ellipse dont tu choisirais toi même les paramètres bleu rouge et vert ?

http://img213.imageshack.us/img213/2/puzzlefy3.jpg



Posted by: Flodelarab

Et jaune d'ailleurs aussi éventuellement en considérant le prolongement de l'axe vert.



Posted by: kau

Ah ouais bonne idée.
Quelle logiciel tu utilise pour obtenir ton image?
Et comment tu fait pour obtenir les arrondis à la base du "pied"?



Posted by: Flodelarab

Citation:
Posté par kau
Ah ouais bonne idée.
Quelle logiciel tu utilise pour obtenir ton image?
Et comment tu fait pour obtenir les arrondis à la base du "pied"?
Paint.
Ou plutôt xpaint pour etre précis.

Pour la base, c'est de la fantaisie. Ne t'embetes pas. Fais juste une interpénétration de ton carré avec ton ellipse.

Et utilise la définition paramétrique de l'ellipse:
3$ \{x=Lcos(t)\\y=Msin(t)



Posted by: Flodelarab

J'obtiens ça comme premier test:
http://img259.imageshack.us/img259/7859/essaicn3.jpg

Les "vers le bas" sont ronds et les "vers la droite" sont exotiques.



Posted by: kau

Ha oui, très sympa!
reste à ajouter un peu de diversité.
J'ai 3 heures de train ce soir, j'en profiterais pour coder ça ;)



Posted by: Flodelarab

Citation:
Posté par kau
Ha oui, très sympa!
reste à ajouter un peu de diversité.
J'ai 3 heures de train ce soir, j'en profiterais pour coder ça ;)

J'ai eu la flemme d'inclure le module random.
Mais sinon tout est paré pour la diversité.
Je trouve quand même que la plus part du temps, la différence entre les formes n'est pas flagrante.
J'ai eu une autre idée: je vais tenter de mettre du cos³ a la place du cos.... pour voir











-