La hauteur de mon image est constante, mais ça me semble plus simple que si elle variait, non ?
Pour éclaircir les choses, voici une illustration de ce que je veux.
Titre de l'image
Je pars de la tige bleu/vert/rouge à gauche et je veux la tordre de manière à ce que le haut suive la courbe bleue, en la répétant éventuellement jusqu'à avoir rejoint les deux bouts de la courbe. Le résultat attendu est en bas.
Mes courbes ont toutes ce genre de forme : soit décroissante, soit croissante. J'ai récupéré l'équation des courbes de Bézier sur Wikipédia. La première difficulté est de calculer le pas d'incrément du paramètre t de l'équation. Je triche déjà en profitant des propriétés de mes courbes pour déterminer t en fonction du x pour lequel je veux le y.
Une fois que j'ai le point (x, y) de ma courbe dans l'image résultat, il faut que je colle un bout de l'image source « sous » le point. C'est la que les difficultés commencent. Il faut déjà que je retrouve l'abscisse correspondant à mon t dans l'image initiale, en calculant la longueur de la courbe entre son origine et le point (x, y).
Il faut aussi que je calcule l'orientation de la courbe pour mon t courant.
Ensuite, si je colle une colonne de pixels de mon image source sous mon point dans la direction orthogonale à la courbe, je vais avoir des trous. Il faut plutôt que je prenne les points sous la courbe et que je retrouve à quel point ils correspondent dans l'image source.
Enfin, les points qui correspondent au bas de l'image source vont avoir tendance à se superposer dans la projection. Il faut que je mélange les couleurs dans le résultat.
Finalement tout ce que j'arrive à produire est un bandeau gris moche.
[^] # Re: Algo
Posté par Julien Jorge (site web personnel) . En réponse au message Projeter une image le long d'un chemin. Évalué à 2.
La hauteur de mon image est constante, mais ça me semble plus simple que si elle variait, non ?
Pour éclaircir les choses, voici une illustration de ce que je veux.
Titre de l'image
Je pars de la tige bleu/vert/rouge à gauche et je veux la tordre de manière à ce que le haut suive la courbe bleue, en la répétant éventuellement jusqu'à avoir rejoint les deux bouts de la courbe. Le résultat attendu est en bas.
Mes courbes ont toutes ce genre de forme : soit décroissante, soit croissante. J'ai récupéré l'équation des courbes de Bézier sur Wikipédia. La première difficulté est de calculer le pas d'incrément du paramètre t de l'équation. Je triche déjà en profitant des propriétés de mes courbes pour déterminer t en fonction du x pour lequel je veux le y.
Une fois que j'ai le point (x, y) de ma courbe dans l'image résultat, il faut que je colle un bout de l'image source « sous » le point. C'est la que les difficultés commencent. Il faut déjà que je retrouve l'abscisse correspondant à mon t dans l'image initiale, en calculant la longueur de la courbe entre son origine et le point (x, y).
Il faut aussi que je calcule l'orientation de la courbe pour mon t courant.
Ensuite, si je colle une colonne de pixels de mon image source sous mon point dans la direction orthogonale à la courbe, je vais avoir des trous. Il faut plutôt que je prenne les points sous la courbe et que je retrouve à quel point ils correspondent dans l'image source.
Enfin, les points qui correspondent au bas de l'image source vont avoir tendance à se superposer dans la projection. Il faut que je mélange les couleurs dans le résultat.
Finalement tout ce que j'arrive à produire est un bandeau gris moche.