Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelado de Curvas
Facultad de Ingenierı́a
Programa Ingenierı́a en Multimedia
Universidad Militar Nueva Granada
Definición Splines.
Splines cubicos.
Splines de Bézier.
(a) (b)
(c) (d)
Dr. Eng. Alexander Cerón Correa Computación Gráfica
Splines de interpolación y de aproximación
Se especifica una curva con spline proporcionando un conjunto
de coordenadas de puntos llamados puntos de control.
Las partes polinómicas se ajustan para que todos los puntos
queden conectados.
Cuando las partes polinómicas se ajustan para que todos los
puntos de control queden conectados se dice que la curva
interpola.
Cuando la curva pasa cerca a los puntos de control se dice
que la curva es de aproximación.
u1 ≤ u ≤ u2 .
Continuidad paramétrica:
C 0 , los valores x , y, z , de la curva evaluados en u2 de una
curva son iguales a los de la siguiente curva en u1 .
C 1 , los valores x , y, z , de las primeras derivadas de la curva
evaluados en u2 de una curva son iguales a los de la siguiente
curva en u1 .
C 2 , los valores x , y, z , de las segundas derivadas de la curva
evaluados en u2 de una curva son iguales a los de la siguiente
curva en u1 .
x (u) = ax u 3 + bx u 2 + cx u + dx , 0≤u≤1
Condiciones de frontera x(0), x(1), x’(0), x’(1).
pk = (xk , yk , zk ), k = 0, 1, 2, .., n
x (u) = ax u 3 + bx u 2 + cx u + dx ,
y(u) = ay u 3 + by u 2 + cy u + dy ,
z (u) = az u 3 + bz u 2 + cz u + dz .
0≤u≤1
Condiciones de frontera x(0), x(1), x’(0), x’(1).
+Dpk +1 (u 3 − u 2 )
.
Los parámetros C (n, k ) son los coeficientes binomiales:
n!
C (n, k ) =
k !(n − k )!
n −k +1
C (n, k ) = C (n, k − 1)
k
u − uk uk +d − u
Bk ,d (u) = Bk ,d−1 (u) + Bk +1,d−1 (u)
uk +d−1 − uk uk +d − uk +1
void CurvaNurbs ()
{
GLfloat knotVector [8] = {0.0 ,0.0 ,0.0 ,0.0 ,1.0 ,1.0 ,1.0 ,1.0};
GLfloat ctrlPts [4][3] = {{ -4.0 ,0.0 ,0.0} , { -2.0 ,8.0 ,0.0} ,
{2.0 , -8.0 ,0.0} , {4.0 ,0.0 ,0.0}};
GLUnurbsObj * mycurve ;
mycurve = gl uN ew N ur bs R en de r er ();
gluBeginCurve ( mycurve );
gluNurbsCurve ( mycurve ,8 , knotVector ,3 ,& ctrlPts [0][0] ,4 , GL_MAP1_VERTEX_3 );
gluEndCurve ( mycurve );
}