2009-12-28 9 views
2

J'ai un tableau de CGPoints (structure de base avec deux flottants: x et y). Je veux utiliser OpenGL ES pour dessiner une courbe texturée en utilisant ces points. Je peux le faire avec seulement deux points, mais cela devient plus difficile quand j'ai besoin de faire une ligne à partir de plusieurs points.Un moyen rapide de convertir un tableau de points en bande triangle?

Actuellement, je dessine une ligne horizontalement, calcule son angle à partir des points donnés, puis je le fais pivoter. Je ne pense pas que faire cela pour toutes les lignes dans une courbe est une bonne idée. Il y a probablement un moyen plus rapide. Je pense que je peux "agrandir" ou "contracter" tous les points à la fois pour faire une courbe avec une sorte de largeur.

Répondre

1

Je ne suis pas sûr de ce que vous voulez accomplir, mais considérez ceci:

Sur la base d'une liste ordonnée de points, vous pouvez dessiner une polyligne en utilisant ces points. Si vous voulez avoir une polyligne avec une texture 2D dessus, vous pouvez dessiner une série de quadrilatères (en utilisant deux triangles chacun, bien sûr). Vous pouvez générer ces quadrilatères en utilisant une idée similaire à la génération de spline catmul-rom. Considérons une série de points p [i-1], p [i], p [i + 1]. Maintenant, pour chaque i, vous pouvez trouver deux points chacun à une distance epsilon de p [i] le long de la ligne perpendiculaire à la ligne reliant p [i-1] et p [i + 1]. Vous pouvez déterminer les deux points générés pour les points d'extrémité de différentes manières, comme l'utilisation de la perpendiculaire à la ligne de p [0] à p [1].

Je ne sais pas si ce sera plus rapide que votre méthode, mais vous devriez mettre en cache les résultats. Si vous envisagez de faire cela à chaque image, un autre type de solution à votre problème peut être nécessaire.