Question

De ce site , qui semble avoir les informations les plus détaillées sur Catmull splines -Rom, il semble que quatre points sont nécessaires pour créer la spline. Cependant, il ne mentionne pas comment les points p0 et p3 affectent les valeurs entre P1 et P2.

Une autre question que j'ai est comment voulez-vous créer des splines continues? Serait-il aussi facile que la définition des points p1, p2 être continue avec p4, p5 en faisant p4 = p2 (qui est, en supposant que nous avons p0, p1, p2, p3, p4, p5, p6, ..., Pn ).

Une question plus générale est comment peut-on calculer tangentes sur splines Catmull-Rom? Y aurait-il d'impliquer de prendre deux points sur la spline (disons à 0,01, 0,011) et d'obtenir la tangente en fonction de Pythagore, étant donné les coordonnées de position les valeurs d'entrée donnent?

Était-ce utile?

La solution

Jetez un oeil à l'équation 2 - il décrit comment les points de contrôle affectent la ligne. Vous pouvez voir les points P0 et P3 entrent dans l'équation pour tracer des points le long de la courbe de P1 à P2. Vous verrez aussi que l'équation donne P1 quand t == 0 et P2 quand t == 1.

Cette équation exemple peut être généralisé. Si vous avez des points R0, R1, ... RN vous pouvez alors tracer les points entre RK et RK + 1 en utilisant l'équation 2 avec P0 = RK - 1, P1 = RK, P2 = RK + 1 et P3 = RK + 2.

Vous ne pouvez pas tracer de R0 à R1 ou de RN - 1 à RN sauf si vous ajoutez des points de contrôle supplémentaires pour se substituer à R - 1 et RN + 1. L'idée générale est que vous pouvez choisir ce que les points que vous voulez ajouter à la tête et la queue d'une séquence pour vous donner tous les paramètres pour calculer la spline.

Vous pouvez joindre deux splines ensemble en laissant tomber l'un des points de contrôle entre eux. Disons que vous avez R0, R1, ..., RN et S0, S1, ... SM ils peuvent être joints en R0, R1, ..., RN - 1, S1, S2, ... SM.

Pour calculer la tangente en tout point il suffit de prendre la dérivée de l'équation 2.

Autres conseils

Le article de Wikipédia va dans un peu plus en profondeur. La forme générale de la cannelure prend comme points de contrôle d'entrée 2 avec des vecteurs tangents associés. segments splines supplémentaires peuvent alors être ajoutés à condition que les vecteurs tangents aux points de contrôle communs sont égaux, ce qui préserve la continuité de C1.

Dans la forme de Catmull-Rom spécifique, le vecteur de tangente aux points intermédiaires est déterminé par l'emplacement des points de contrôle voisin. Ainsi, pour créer une cannelure continue C1 à de multiples points, il suffit de fournir l'ensemble de points de contrôle et la tangente des vecteurs au niveau du premier et le dernier point de contrôle. Je pense que le comportement standard consiste à utiliser P1 - P0 pour le vecteur tangent en P0 et PN. - PN-1 à PN

Selon l'article de Wikipedia, pour calculer la tangente au point de contrôle Pn, vous utilisez cette équation:

T(n) = (P(n - 1) + P(n + 1)) / 2

Cela répond également à votre première question. Pour un ensemble de 4 points de contrôle, P1, P2, P3, P4, interpoler des valeurs entre P2 et P3 a besoin d'informations former tous les 4 points de contrôle. P2 et P3 définissent eux-mêmes les points d'extrémité à travers laquelle le segment doit interpoler passer. P1 et P3 déterminent le vecteur de tangente du segment d'interpolation aura au point P2. P4 et P2 déterminent le vecteur tangent au segment aura au point P3. Les vecteurs tangents aux points de contrôle influence P2 et P3 de la forme du segment d'interpolation entre eux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top