1 pièce(s) jointe(s)
Et si on traitait les courbes de Bézier ?
Bonjour,
Tout d'abord, un super coup de chapeau à tous ces cours, tutos et explications concernant Python.
Je suis bien loin d'être un expert avec ce langage et tous ces cours me sont d'une très très grande aide. Ils sont, et je suis bien conscient de la nécessité d'en combler un maximum, très "généralistes", très complets mais fort "théoriques".
Pour ma part, j'ai des besoins très spécifiques que j'arrive difficilement à trouver : travailler avec des courbes de Bézier.
Je dessine avec Inkscape (logiciel de dessin vectoriel libre) où il est possible, relativement "facilement", de développer soi-même des extensions dont on a besoin. Seulement voilà, les exemples d'extensions sont très peu documentés et difficiles d'approche, de compréhension pour un profane comme moi.
Dans mon utilisation très spécifique de ce logiciel de dessin vectoriel, je travaille (presque) toujours avec des courbes de Bézier et je dois, par exemple :
- j'ai dessiné deux courbes de Bézier + ou - parallèles
- sur l'une d'elle, je dois définir la position de "nœuds" espacés régulièrement de 5 mm chacun (par exemple, je peux positionner 5 nœuds que je repère ici de 1 à 5)
- je veux ensuite élever une perpendiculaire au milieu de la distance entre deux nœuds consécutifs en direction de la seconde courbe de Bézier pour déterminer le point d'intersection entre cette courbe et la perpendiculaire
- à l'intersection entre cette perpendiculaire et la seconde courbe de Bézier, je place un nouveau nœud. Je vais donc définir (dans cet exemple) 4 nœuds (de a à d)
- je veux tracer une courbe de Bézier continue (Dans Inkscape, les tracés effectuées avec l'outil plume sont toujours des courbes de Bézier, que le tracé soit courbe ou rectiligne) en "zigzag" qui va relier les nœuds 1 -> a, puis a -> 2, puis 2 -> b, b -> 3, 3 -> c, c -> 4, 4 -> d et d ->5.
MAIS je dois également faire attention à certains détails :
- lorsque la première courbe (celle qui comporte les 5 nœuds de départ dans mon exemple) a ses perpendiculaires dirigées vers l'extérieur de la courbe (et vers la seconde courbe), la distance séparant les nœuds à créer sur la seconde courbe de Bézier risque de devenir importante et devra être gérée.
- lorsque la première courbe a ses perpendiculaires dirigées vers l'intérieur de la courbe, les perpendiculaires risque de se croiser, ce qui n'est pas admissible, dans mon cas de figure. Il faudra aussi gérer ce problème.
Je joins un exemple de ce que je veux obtenir. Bien entendu, mes courbes sont bien plus complexes, sont "moins parallèles" que dans l'exemple ci-joint.
C'est une demande bien complexe à gérer :
- d'après les coordonnées des courbes de Bézier retournées par Inkscape (respectant la norme W3C du SVG), je dois calculer la position du point milieu entre chaque nœuds de la première courbe
- calculer la tangente à la courbe en ce point médian et définir la perpendiculaire à la tangente passant par ce point et dirigé vers la seconde courbe
- déterminer la position de l'intersection de cette perpendiculaire avec la seconde courbe et placer/ajouter un nœud sur la seconde courbe de Bézier
- relier les nœuds pour tracer le "zigzag" désiré
Voilà un exemple très concret de ce que je recherche également en plus de toutes les informations techniques d'excellente qualité qu'il est possible de trouver ici.
Encore une fois bravo pour la qualité (et la quantité) impressionnante de ces cours.
Pièce jointe 172432
python en tete des fréquentations dans le forum
bonsoir
python est en tête des fréquentations sur le forum devellopez.net
Succès légitime ou difficulté pour trouver de la doc ?
bonne nuit