Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

cscvn

Curva de spline cúbico de interpolación "natural" o periódica

Descripción

ejemplo

curve = cscvn(points) devuelve una curva de spline cúbico paramétrica variacional o natural, (en formato ppform) que pasa por los puntos de la secuencia proporcionados (:j), j = 1:end. El valor del parámetro t(j) para el j-ésimo punto sigue el esquema centrípeto de Eugene Lee [1], como raíz cuadrada acumulada de longitud de cuerda:

i<jpoints(:,i+1)points (:,i)2

Si el primer y el último punto coinciden y no hay otros puntos repetidos, la función construye una curva de spline cúbico periódica. Sin embargo, los puntos dobles resultan en esquinas.

Ejemplos

contraer todo

Este ejemplo muestra cómo construir y representar varias curvas distintas de spline cúbico de interpolación utilizando la función cscvn.

Este código genera una secuencia de puntos y, a continuación, representa el spline cúbico generado con la función cscvn. Los puntos elegidos se marcan como círculos:

points=[0 1 1 0 -1 -1 0 0; 0 0 1 2 1 0 -1 -2]; 
fnplt(cscvn(points)); hold on, 
plot(points(1,:),points(2,:),'o'), hold off

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Este código representa una curva circular que atraviesa los cuatro vértices del rombo estándar (debido a las condiciones de límite periódicas aplicadas):

 fnplt(cscvn( [1 0 -1    0 1;0 1 0   -1 0] ))

Figure contains an axes object. The axes object contains an object of type line.

Este código muestra una esquina en el punto doble, así como en el extremo de la curva:

 fnplt(cscvn( [1 0 -1 -1 0 1;0 1 0 0 -1 0] ))

Figure contains an axes object. The axes object contains an object of type line.

Por último, este código genera una curva cerrada con un punto doble, que resulta en una esquina. Dedíqueselo a sus seres queridos.

c=fnplt(cscvn([0 .82 .92 0 0 -.92 -.82 0; .66 .9 0 ...
-.83 -.83 0 .9 .66])); fill(c(1,:),c(2,:),'r'), axis equal

Figure contains an axes object. The axes object contains an object of type patch.

Argumentos de entrada

contraer todo

Secuencia de puntos en los que se interpola el spline cúbico "natural" paramétrico, especificada como escalar, vector o matriz.

Argumentos de salida

contraer todo

Spline en formato ppform, devuelto como estructura con los siguientes campos.

Forma del spline, devuelta como pp. pp indica que el spline tiene forma polinómica por tramos.

Posiciones de los nudos del spline, devueltas como un vector o un arreglo de celdas de vectores en el caso de datos multivariados. Los vectores contienen elementos estrictamente crecientes que representan el inicio y el fin de cada uno de los intervalos en los que se definen los tramos polinómicos.

Coeficientes de los polinomios para cada tramo, devueltos como una matriz o como un arreglo en el caso de datos multivariados.

Número de tramos polinómicos que describen el spline, devuelto como un escalar o como un vector de números de tramos de cada variable en el caso de datos multivariados.

Orden de la función polinómica que describe cada tramo polinómico del spline, devuelta como un escalar o como un vector que contiene el orden de cada variable en el caso de datos multivariados.

Dimensionalidad de la función de destino, devuelta como un escalar.

Algoritmos

cscvn determina la secuencia de salto t como

tk={0,k=1i=1k1(j=1d(pi+1,jpi,j)2)14,k>1

donde tk es el elemento en la posición k en t, 1 ≤ k ≤ n–1, y p es la traspuesta de la matriz points de d por n. Si points contiene puntos repetidos, cscvn utiliza csape con condiciones de contorno periódicas o variacionales para construir los tramos suaves. cscvn devuelve la secuencia de salto t en el campo breaks del argumento de salida curve.

Referencias

[1] E. T. Y. Lee. “Choosing nodes in parametric curve interpolation.” Computer-Aided Design 21 (1989), 363–370.

Historial de versiones

Introducido en R2006b