J'ai plusieurs objets Spline2D dans mon code, chacun ayant une méthode Position, Velocity et Acceleration qui renvoie un vecteur de la quantité spécifiée à un moment particulier. J'ai utilisé ces vecteurs afin de construire une géométrie pour créer des traits de dégradé pour les courbes, mais j'ai des problèmes avec les auto-intersections aux courbes raides. À titre d'exemple, voici une courbe où je rencontre cela:
Filaire: http://twitpic.com/2zplw1/full
Rempli: http://twitpic.com/2zpmnt/full
Comme vous pouvez le voir, au deuxième virage, la partie intérieure se croise, ce qui provoque cet artefact laid. Existe-t-il un bon algorithme / méthode pour tracer des courbes sans provoquer cette auto-intersection?
EDIT : Des exemples plus extrêmes, plus une maquette de ce que j'aimerais réaliser:
Filaire: http://twitpic.com/2ztwzi/full
Rempli: http://twitpic.com/2ztwkt/full
Idéal Résultat (maquette): http://twitpic.com/2ztxa8/full
Réponses:
Si vous les restituez avec le GPU et toute API 3D moderne (par exemple, OpenGL / D3D), il me semble que vous pouvez vous en débarrasser avec des tests de profondeur. Si vous affectez vos verts extérieurs à z = FAR et vos verts intérieurs à z = NEAR, le test de profondeur doit empêcher le chevauchement de s'afficher. Avec OpenGL:
Caveat emptor: cela ne fonctionnera pas si vous avez besoin de traits translucides.
la source
Le "Fix" va dépendre de ce à quoi vous voulez que la sortie résultante ressemble. Le problème n'a pas vraiment été suffisamment bien défini ici: à quoi doit-il ressembler?
Je vous suggère d'abord d'essayer de créer un exemple encore plus extrême du problème, puis d'utiliser Photoshop / Paint pour le corriger, vous pourriez trouver l'inspiration pour une solution.
Voulez-vous qu'il se replie? Se chevauchent avec le bord? Tirez jusqu'à ce qu'il ne se chevauche pas?
la source