Page 4 sur 5

Re: Trouver un point entre deux points

Publié : mer. 01/juil./2015 15:48
par blendman
ça plante dès qu'on essaie de cliquer avec le bouton gauche de la souris ;)
Les autres boutons, sont ok.

Re: Trouver un point entre deux points

Publié : jeu. 02/juil./2015 8:11
par djes
J'ai oublié de dire qu'il faut activer la gestion des threads :)

Re: Trouver un point entre deux points

Publié : jeu. 02/juil./2015 8:47
par blendman
j'aurai pu y penser ^^

C'est effectivement mieux avec la gestion des threads ;)

Re: Trouver un point entre deux points

Publié : dim. 05/juil./2015 11:24
par blendman
Bon, j'ai retesté et le résultat est top pour le moment, avec des lignes de 1 pixels avec AA :)

J'attends vraiment la suite avec impatience, Djes ;)

Re: Trouver un point entre deux points

Publié : dim. 05/juil./2015 12:40
par djes
Faudra attendre un peu, je suis en voyage pour une semaine... :-P

Re: Trouver un point entre deux points

Publié : dim. 05/juil./2015 13:20
par blendman
djes a écrit :Faudra attendre un peu, je suis en voyage pour une semaine... :-P
Bien sûr, pas de soucis, c'est juste qu'en testant j'ai trouvé que ça avait vraiment du potentiel ;).

Re: Trouver un point entre deux points

Publié : dim. 05/juil./2015 17:32
par djes
Merci ! J'espère pouvoir être utile. Le bézier est assez hard à débugger, je crois que je vais devoir me plonger dans l'algo pour voir où ça pèche.

Re: Trouver un point entre deux points

Publié : lun. 20/juil./2015 13:41
par djes
Bon, j'ai laissé tomber le bézier pour l'instant, et refait une petite fonction 'curve' qui crée une courbe entre deux mouvements de la souris en fonction de la direction prise par le 3ème point. Ca semble bien fonctionner, la courbe est douce même quand les mouvements de la souris sont rapides, mais il faudrait tester avec une tablette. L'antialias n'est pas réussi.

J'ai laissé plein de code inutile pour l'instant, dont des exemples de Catmull-Rom qui utilisent deux points directeurs et qui permettraient d'améliorer la fonction (en se servant du point précédent ET du point suivant). Il y a des programmes fonctionnels de Catmull-Rom en PB sur le forum (Typhoon et le module de Comtois) dont on peut s'inspirer.

A suivre : si j'y arrive, une fonction curve qui fait tout, "à la" Bresenham, et avec antialiasing tant qu'à faire...

Re: Trouver un point entre deux points

Publié : lun. 20/juil./2015 15:15
par blendman
salut

j'ai testé la dernière version avec ma tablette.
J'ai l'impression que les courbes ne sont pas lissées, car le rendu final est comme parcouru de spasmes ^^

Voici une image pour mieux comprendre le résultat :
Image

On voit sur les courbes des sortes de bosses. ça doit sans doute être lié au fait qu'à la tablette, on peut dessiner plus vite qu'à la souris, mais même lorsque je vais lentement ou à la souris, j'obtiens des résultats similaires ^^.

Re: Trouver un point entre deux points

Publié : lun. 20/juil./2015 15:58
par djes
Merci d'avoir testé, c'est ce qu'il me fallait. L'algo crée une courbe à partir de 3 points, entre le 1er et le 2ème, et sa forme optimale est à déterminer ensemble. Mets ça aux alentours du CLS (lignes 580...) pour voir sa forme :

Code : Tout sélectionner

  ;-CLS
  StartDrawing(CanvasOutput(0))
  ;Box(0, 0, 800, 600, #White)
  ;plotCubicBezierSegAA(x, y, 400, 200, 400, 300, 400, 400, $FF)
  x1 = 200 : y1 = 500 :   Plot(x1, y1, #Blue)
  x2 = 400 : y2 = 400 :   Plot(x2, y2, #Blue)
  x3 = 500 : y3 = 500 :   Plot(x3, y3, #Blue)
  Curve(x1, y1, x2, y2, x3, y3, #Red)
Même si elle ne devrait pas être parfaite, je me demande s'il n'y a pas un petit bug dans certains cas quand même...

Re: Trouver un point entre deux points

Publié : lun. 20/juil./2015 16:14
par falsam
Hello Spock. J'ai essayé ton code. Si on va trop cite et c'est le cas de Blendman, l'écartement entres les points n'est pas identique.

Re: Trouver un point entre deux points

Publié : lun. 20/juil./2015 17:00
par blendman
@djes : ta courbe, avec ton exemple semble bien, mais effectivement, dès que je dessine, les courbes obtenues ont des bosses ^^

@Dobro : sympa tes deux codes. Le bézier est vraiment pas mal, on peut régler en plus le nombre de "segments" (le i, dans la procédure bézier).
Par contre, ce qu'on cherche à obtenir, c'est un joli trait, avec AA et tout ;).

Re: Trait, courbe, ligne, points tillés, etc...

Publié : lun. 20/juil./2015 17:28
par djes
Héhé, les bosses devraient disparaître avec le catmull... (j'espère) lol. Merci pour le bezier, Spock !

Re: Trait, courbe, ligne, points tillés, etc...

Publié : mar. 21/juil./2015 16:15
par djes
Blendman> Code mis à jour, pourrais-tu retester, stp ? Merci

Re: Trait, courbe, ligne, points tillés, etc...

Publié : mar. 21/juil./2015 17:18
par blendman
@dobro : le problème de cette méthode c'est que pour les grandes images, ça devient vite ingérable ^^ (imagines si tu dessines sur une images de 3000*3000 par exemple, et ça m'arrive ;)).

@djes : c'est mieux, j'ai beaucoup moins de bosses ^^ :
Image
Il reste encore de temps en temps des légères bosses et l'AA semble moins bon que le 1er code que tu avais fait, mais j'imagine que ça va encore un peu changé ;).

Sinon, je me disais qu'on pourrait peut-être regardé du coté de Pencil, mypaint ou krita, qui sont opensources, pour voir comment ils procédent. Car tous les trois ont une gestion du trait qui est vraiment bien (lissé et joli AA)