B-Splines/es: Difference between revisions

From FreeCAD Documentation
(Created page with "Para crear B-splines, entra en un sketch y utiliza el botón de la barra de herramientas {{Button|16px Sketcher_CreateBSpline/es|Crear B-...")
(Updating to match new version of source page)
 
(41 intermediate revisions by 3 users not shown)
Line 4: Line 4:
Esta página describe cómo utilizar las B-splines en FreeCAD. También ofrece información sobre qué son las B-splines y para qué aplicaciones son útiles.
Esta página describe cómo utilizar las B-splines en FreeCAD. También ofrece información sobre qué son las B-splines y para qué aplicaciones son útiles.


<span id="Motivation"></span>
==Motivación==
==Motivación==


Line 32: Line 33:
Así, una curva con la que se puedan conectar dos puntos tangencialmente a un punto de referencia puede ser muy útil para las construcciones. Las curvas de Bézier ofrecen esta característica.
Así, una curva con la que se puedan conectar dos puntos tangencialmente a un punto de referencia puede ser muy útil para las construcciones. Las curvas de Bézier ofrecen esta característica.


<span id="Bézier_curves"></span>
== Curvas Bézier ==
== Curvas Bézier ==


<span id="Derivation"></span>
=== Derivación ===
=== Derivación ===


<div class="mw-translate-fuzzy">
Curvas de Bézier son polinomios que describen la conexión entre 2 puntos. El polinomio más sencillo que conecta 2 puntos es una recta (<math>A*x^1+B</math>) por lo que también las curvas de Bézier lineales son lineales:
Curvas de Bézier son polinomios que describen la conexión entre 2 puntos. El polinomio más sencillo que conecta 2 puntos es una recta (<math>A*x^1+B</math>) por lo que también las curvas de Bézier lineales son lineales:
</div>


[[File:Bezier_linear_anim.gif]]
[[File:Bezier_linear_anim.gif]]
{{Caption|Animación 1: Curva de Bézier lineal.}}
{{Caption|Animación 1: Curva de Bézier lineal.}}


<div class="mw-translate-fuzzy">
Sin embargo, un polinomio se vuelve primero útil cuando podemos controlarlo. Así que debe haber un punto entre los 2 puntos finales que nos permita definir cómo se conectan los puntos finales. Como en la opción 3 del ejemplo anterior, la curva es útil cuando comienza y termina tangencialmente a las líneas que cruzan los puntos finales. Y esta es una característica principal de las curvas Bézier. Así que vamos a añadir un punto de control entre los 2 puntos finales. La curva comenzará tangencialmente hacia este punto de control, lo que significa que es tangencial a la línea que podemos dibujar entre el punto inicial y el punto de control. Yendo hacia atrás desde el punto final, la curva también será tangente a la línea que podemos dibujar entre el punto de control y el punto final. La animación 2 muestra el aspecto de esta curva.
Sin embargo, un polinomio se vuelve primero útil cuando podemos controlarlo. Así que debe haber un punto entre los 2 puntos finales que nos permita definir cómo se conectan los puntos finales. Como en la opción 3 del ejemplo anterior, la curva es útil cuando comienza y termina tangencialmente a las líneas que cruzan los puntos finales. Y esta es una característica principal de las curvas Bézier. Así que vamos a añadir un punto de control entre los 2 puntos finales. La curva comenzará tangencialmente hacia este punto de control, lo que significa que es tangencial a la línea que podemos dibujar entre el punto inicial y el punto de control. Yendo hacia atrás desde el punto final, la curva también será tangente a la línea que podemos dibujar entre el punto de control y el punto final. La animación 2 muestra el aspecto de esta curva.
</div>


[[File:Bezier_quadratic_anim.gif]]
[[File:Bezier_quadratic_anim.gif]]
Line 61: Line 68:
[[File:B-splines Motivation-cubic-bezier.png|450px]]
[[File:B-splines Motivation-cubic-bezier.png|450px]]


<span id="Rules"></span>
=== Reglas ===

<div class="mw-translate-fuzzy">
En el texto anterior ya habrás notado algunas "reglas" para las curvas de Bézier:
* El grado del polinomio es también el grado de las curvas.
* Si necesitas <math>n</math> vueltas, necesitas al menos una curva de Bézier de <math>n+1</math> grado.
* Una curva de Bézier siempre comienza tangencialmente a la línea entre el punto inicial y el primer punto de control (y termina tangencialmente a la línea entre el último punto de control y el punto final).
</div>

<span id="Math"></span>
=== Matemáticas ===
=== Matemáticas ===


Line 74: Line 92:


Si le interesa más, eche un vistazo a [https://pomax.github.io/bezierinfo/#explanation Las matemáticas de las curvas de Bézier] con una derivación muy bien animada de las matemáticas de las curvas de Bézier.
Si le interesa más, eche un vistazo a [https://pomax.github.io/bezierinfo/#explanation Las matemáticas de las curvas de Bézier] con una derivación muy bien animada de las matemáticas de las curvas de Bézier.

=== Reglas ===

En el texto anterior ya habrás notado algunas "reglas" para las curvas de Bézier:
* El grado del polinomio es también el grado de las curvas.
* Si necesitas <math>n</math> vueltas, necesitas al menos una curva de Bézier de <math>n+1</math> grado.
* Una curva de Bézier siempre comienza tangencialmente a la línea entre el punto inicial y el primer punto de control (y termina tangencialmente a la línea entre el último punto de control y el punto final).


== B-Splines ==
== B-Splines ==


<span id="Basics"></span>
=== Básicos ===
=== Básicos ===


Line 96: Line 108:
** Para una B-spline cúbica esto significa que la curvatura (derivada de segundo orden) no cambia al viajar de un segmento al siguiente. Esta es una característica muy útil como veremos más adelante.
** Para una B-spline cúbica esto significa que la curvatura (derivada de segundo orden) no cambia al viajar de un segmento al siguiente. Esta es una característica muy útil como veremos más adelante.


<div class="mw-translate-fuzzy">
Si está interesado en más detalles sobre las propiedades de la B-Spline, eche un vistazo al vídeo [https://www.youtube.com/watch?v=xXJylM2S72s MOOC Curvas 8.2: Propiedades de las curvas B-spline].
Si está interesado en más detalles sobre las propiedades de la B-Spline, eche un vistazo al vídeo [https://www.youtube.com/watch?v=xXJylM2S72s MOOC Curvas 8.2: Propiedades de las curvas B-spline].
</div>


=== Base ===
==== Basis ====


Since we will only introduce the basics of B-spline, we don't go here into the details.
The name ''B-spline'' stands for ''Basis spline''. Instead of forming the spline as a combination of Bézier curves, the approach is to to model '''the same spline''' a different way. The idea is hereby to use another set of polynomials as basis. A linear combination of these basis polynomials <math>B_D(t)</math> with the order <math>D</math> forms the B-spline. [https://www.youtube.com/watch?v=dPPTCy4L4rY This video] explains the transition from the Bézier control points to the polynomial basis functions describing the spline.
Mathematically we can describe a B-spline with this formula:


The basis constructs the spline. Looking at the definition of Bézier curves in section [[#Math|Math]] we remember that a Bézier curve is a linear combination of polynomials with the x/y coordinate of each of the control points as a factor. These polynomials are called Bernstein polynomials.
<math>\quad
c(t)=\sum_{k=0}^{N}p_{k}B_{k, D}(t)
</math>


As several Bézier curves are combined to form a spline, we get a set of Bernstein polynomials forming the spline (they are the basis). As we want to overcome the mentioned limitations of Bézier curves, we don't geometrically combine the different Bernstein polynomials of the Bézier curves, but define Bernstein polynomials over the whole geometrical range of the spline. So we '''don't combine''' the Bézier curves with its Bernstein polynomials, which would be
Hereby <math>p_k</math> is the <math>k</math>-th control point of the B-spline and also a factor for the <math>k</math>-th base polynomial <math>B_{k, D}(t)</math>. Every basis polynomial describe the spline in a certain region and therefore moving a control point does not affect the whole spline. To understand this, it is highly recommended to have a look at [https://www.youtube.com/watch?v=vjTyWIKviNc this video] starting at minute 2:23.
:<math>\textrm{Bezier-combination}=\begin{cases}
\sum_{i=0}^{n}P_{i}\cdot B_{i,n}(t), & 0\le t\le1\\
\sum_{i=0}^{n}P_{i+n}\cdot B_{i,n}(t-1), & 1\le t\le2\\
\cdots
\end{cases}</math>


whereas <math>B_{i,n}(t)</math> is the i-th Bernstein polynomial with order <math>n</math> and the coefficients <math>P_{i}</math> are the point coordinates of the Bézier curve control points. But we use a '''different set of functions''' that are defined over the whole spline range:
As explained in the video, the basis polynomials are Bernstein polynomials. The set of basis polynomials for a certain B-spline can be visualized this way:
:<math>\textrm{B-spline}= \sum_{i=0}^{n}p_{i}\cdot N_{i,n}(t)</math>.


Note that in general <math>N_{i,n}(t) \ne B_{i,n}(t)</math>, and the Bezier control points <math>\{P_1, P_2,\dots\}</math> are different from B-spline control points <math>\{p_1, p_2,\dots\}</math>.
[[File:Bernstein_Polynomials.svg]]
{{Caption|A set of Bernstein polynomials with order 4. They describe a 4th order B-spline with 5 control points.}}


The different <math>N_{i,n}(t)</math> are defined piecewise where the interval of every piece is the interval of the Bézier piece.
At every spline position <math>t</math> the sum of polynomials is 1 (indicated by the orange line). At the start only the red polynomial has an influence since all other polynomials are there 0. At greater <math>t</math> the spline is described by a linear combination of different basis polynomials.
In the image above, every polynomial is greater than 1 for the whole range <math>0 < t < 1</math>. This is not necessarily the case. As shown in the video, the basis polynomials are basically only greater than 0 for a certain spline position range. The interval at which a basis polynomial is greater than 0 is described by the ''knot vector''. If you are interested in learning about the knot vector, have a look at [https://www.youtube.com/watch?v=ni5NNPCVvDY this video].


When the lengths of all <math>N_{i,n}</math> pieces is equal, we speak of a uniform spline. (In literature this is often denoted as equal travel time <math>t</math> per piece.)

To understand how the <math>p_{i}</math> are the coordinates of the B-spline control points, see the first minute of [https://www.youtube.com/watch?v=dPPTCy4L4rY&list=PL8bSwVy8_IcMvtI70tZoYesCS0hGVO5qd this video].

==== Knot vector ====

As derived above, B-splines are created out of <math>N_{i,n}</math> piecewise polynomials with continuity up to a certain derivative between the pieces. The endpoints of the piece's definition interval are called knots. For a spline defined over <math>k</math> pieces, there are <math>k+1</math> knots given by the so-called ''knot vector'':</br><math>\{t_0, t_1, t_2,\dots, t_k\}</math> whereas <math> t_0 < t_1 < t_2 < \dots < t_k</math>

The knot vector comprises the knots of the <math>N_{i,n}</math> basis functions that define the B-spline, see [https://www.youtube.com/watch?v=ni5NNPCVvDY this video]. The basis functions of a B-spline can be calculated using the knot vector and a creation algorithm, see [https://www.youtube.com/watch?v=hrsO45AHtbs this video].

The derivative until which continuity exists is given by the multiplicity <math>m</math>. Therefore we can specify a vector with the multiplicity for every knot: <math>\{m_0, m_1,\dots, m_k\}</math>. A knot on a spline with degree ''d'' and the multiplicity ''m'' tells that the curve left and right to the knot has at least an equal ''n'' order derivative (called ''C''<sup>''n''</sup> continuity) whereas <math>n=d-m</math>.

<span id="Non-uniform_B-splines"></span>
=== B-splines no-uniformes ===
=== B-splines no-uniformes ===


<div class="mw-translate-fuzzy">
A property of the Bernstein polynomials is that when looking at the different S-spline Bézier parts, the path length of every part is the same. (The path length is often called the ''travel time''). As you can imagine, it can be useful to have B-splines whose Bézier parts have different path lengths. This can be achieved by weighting the different polynomials:
Una propiedad de los polinomios de Bernstein es que cuando se observan las diferentes partes de la S-spline Bézier, la longitud del recorrido de cada parte es la misma. (La longitud de la trayectoria suele llamarse ''tiempo de recorrido''). Como puedes imaginar, puede ser útil tener B-splines cuyas partes Bézier tengan diferentes longitudes de trayectoria. Esto puede lograrse ponderando los diferentes polinomios:
</div>


Mathematically this is achieved by defining the different <math>N_{i,n}</math> pieces at different intervals. If for example a B-spline is defined for the interval [0, 1], it is uniform if all its e.g. 5 pieces are also defined in this interval. If now <math>N_{1,4}</math> is only defined in the interval [0, 0.6] (outside the interval it is set to zero), it is shorter and thus the spline becomes non-uniform.
<math>\quad
c(t)=\sum_{k=0}^{N}d_{k}B_{k, D}(t)w_k
</math>


As described above the parameters of the knots are described by the knot vector. So the knot vector stores the definition intervals. When now one piece gets another interval, also the knot vector changes, see [https://www.youtube.com/watch?v=w-l5R70y6u0 this video] for a visualization.
<math>w_k</math> is hereby the weight of the <math>k</math>-th control point. When the weights are not equal, the B-spline is called '''non-uniform'''.


=== Rational B-splines ===
Especially when B-splines should be used for 3D modelling, normalized, non-uniform B-splines are necessary. The normalization is done by a division by the weighted basis functions. Thus when all <math>w_k</math> are equal, we get a uniform B-spline, independent on the weight itself:


A further generalization can be made for B-splines by introducing weights for the control points. This way it can be controlled "how important" a control point is.
<math>\quad
c(t)=\cfrac{\sum_{k=0}^{N}d_{k}B_{k, D}(t)w_k}{\sum_{k=0}^{N}B_{k, D}(t)w_k}
</math>


The equation for such a spline is
These non-uniform and rational (because of the division) B-splines are often called '''NURBS'''. Looking at their formula, we see that they are in fact a B-spline with a weighted basis <math>R_{k, D}(t)</math>:


<div class="mw-translate-fuzzy">
<math>\quad
<math>\quad
c(t)=\sum_{k=0}^{N}d_{k}R_{k, D}(t)
c(t)=\cfrac{\sum_{k=0}^{N}d_{k}B_{k, D}(t)w_k}{\sum_{k=0}^{N}B_{k, D}(t)w_k}
</math>
</math>
</div>


Notice that the function is no longer a polynomial, but a rational function, and these splines are called rational B-splines. Observe that when all <math>w_i</math> are equal, the equation reduces to a regular non-rational B-spline. So non-rational B-splines are a subset of rational B-splines.
whereas


<div class="mw-translate-fuzzy">
<math>\quad
Estas B-splines no-uniformes y racionales (por la división) suelen llamarse '''NURBS''''. Observando su fórmula, vemos que en realidad son una B-spline con una base ponderada <math>R_{k, D}(t)</math>:
R_{k, D}=\cfrac{B_{k,D}(u)w_k}{\sum_{l=1}^N B_{l,D}(t)w_l}
</math>
</div>


<span id="B-splines_in_FreeCAD"></span>
== B-splines en FreeCAD ==
== B-splines en FreeCAD ==


FreeCAD ofrece la posibilidad de crear B-splines uniformes o no uniformes de cualquier grado en 2D a través del [[Sketcher_Workbench/es|Ambiente de trabajo Croquizador]].
FreeCAD ofrece la posibilidad de crear B-splines uniformes o no uniformes de cualquier grado en 2D a través del [[Sketcher_Workbench/es|Ambiente de trabajo Croquizador]].


<span id="Creation"></span>
=== Creación ===
=== Creación ===


Para crear B-splines, entra en un sketch y utiliza el botón de la barra de herramientas {{Button|[[File:Sketcher_CreateBSpline.svg|16px]] [[Sketcher_CreateBSpline/es|Crear B-spline]]}}. A continuación, haz clic con el botón izquierdo para establecer un punto de control, mueve el ratón con el botón izquierdo para establecer el siguiente punto de control y así sucesivamente. Finalmente, haz clic con el botón derecho para terminar la definición y crear la B-spline.
Para crear B-splines, entra en un sketch y utiliza el botón de la barra de herramientas {{Button|[[File:Sketcher_CreateBSpline.svg|16px]] [[Sketcher_CreateBSpline/es|Crear B-spline]]}}. A continuación, haz clic con el botón izquierdo para establecer un punto de control, mueve el ratón con el botón izquierdo para establecer el siguiente punto de control y así sucesivamente. Finalmente, haz clic con el botón derecho para terminar la definición y crear la B-spline.


<div class="mw-translate-fuzzy">
By default uniform cubic splines are created, except there are not enough control points to do this. So when you create a B-spline with only 2 control points, you get of course a spline that is single linear Bézier curve, for 3 control points you get a quadratic Bézier curve, first with 5 control points you get a cubic B-spline consisting of 2 Bézier segments.
Por defecto se crean splines cúbicas uniformes, excepto que no hay suficientes puntos de control para hacerlo. Así que cuando se crea una B-splinecon sólo 2 puntos de control, se obtiene por supuesto una spline que es curva lineal simple de Bézier, para 3 puntos de control se obtiene una curva cuadrática de Bézier, primero con 5 puntos de control se obtiene una spline B cúbica que consiste en 2 segmentos de Bézier.
</div>


To create periodic B-splines (B-splines that form a closed curve), use the toolbar button {{Button|[[File:Sketcher_CreatePeriodicBSpline.svg|16px]] [[Sketcher_CreatePeriodicBSpline|Periodic B-spline]]}}. It is not necessary to set the last control point onto the first one because the B-spline will automatically be closed:
Para crear B-splines periódicas (B-splines que forman una curva cerrada), utiliza el botón de la barra de herramientas {{Button|[[File:Sketcher_CreatePeriodicBSpline.svg|16px]] [[Sketcher_CreatePeriodicBSpline/es|B-spline periódica]]}}. No es necesario fijar el último punto de control sobre el primero porque la B-spline se cerrará automáticamente:


[[File:Sketcher_Periodic-B-spline-creation.gif]]
[[File:Sketcher_Periodic-B-spline-creation.gif]]


<div class="mw-translate-fuzzy">
B-splines can also be generated out of existing sketch segments. To do this, select the elements and press the the toolbar button {{Button|[[File:Sketcher_BSplineApproximate.svg|24px]] [[Sketcher_BSplineApproximate|Convert Geometry to B-spline]]}}.
Las B-splines también pueden generarse a partir de segmentos de croquis existentes. Para ello, seleccione los elementos y pulse el botón de la barra de herramientas {{Button|[[File:Sketcher_BSplineApproximate.svg|24px]] [[Sketcher_BSplineApproximate/es|Convertir geometría en B-spline]]}}.
</div>

While creating a B-spline, its degree can be specified by pressing the {{KEY|D}} key. With this, the default to create a cubic B-spline if possible, can be overridden. {{Version|0.20}}


<span id="Changing_the_Degree"></span>
=== Cambio de grado ===
=== Cambio de grado ===


To change the degree, select the B-spline and use either the toolbar button {{Button|[[File:Sketcher_BSplineIncreaseDegree.svg|24px]] [[Sketcher_BSplineIncreaseDegree|Increase B-spline degree]]}} or {{Button|[[File:Sketcher_BSplineDecreaseDegree.svg|24px]] [[Sketcher_BSplineDecreaseDegree|Decrease B-spline degree]]}}.
Para cambiar el grado, seleccione la B-spline y utilice el botón de la barra de herramientas {{Button|[[File:Sketcher_BSplineIncreaseDegree.svg|24px]] [[Sketcher_BSplineIncreaseDegree/es|Aumentar grado de la B-spline]]}} o {{Button|[[File:Sketcher_BSplineDecreaseDegree.svg|24px]] [[Sketcher_BSplineDecreaseDegree/es|Decrementar grado de B-spline]]}}.


'''Note:''' Decreasing the degree cannot revert a prior increase of the degree, see the Wiki page [[Sketcher_BSplineDecreaseDegree|Decrease B-spline degree]] for an explanation.
Nota:''' Disminuir el grado no puede revertir un aumento anterior del grado, ver la página Wiki [[Sketcher_BSplineDecreaseDegree/es|Disminuir el grado de la B-spline]] para una explicación.


<span id="Changing_the_Knot_Multiplicity"></span>
=== Cambiar la multiplicidad de nudos ===
=== Cambiar la multiplicidad de nudos ===


The points where two Bézier curves are connected to form the B-spline are called knots. The knot multiplicity determines how the Bézier parts are connected, see the Wiki page [[Sketcher_BSplineIncreaseKnotMultiplicity|Increase knot multiplicity]] for details.
Los puntos donde se conectan dos curvas Bézier para formar la B-spline se llaman nudos. La multiplicidad de nudos determina cómo se conectan las partes de Bézier, vea la página Wiki [[Sketcher_BSplineIncreaseKnotMultiplicity/es|Aumentar multiplicidad de nudos]] para más detalles.


To change the knot multiplicity, use the toolbar buttons {{Button|[[File:Sketcher_BSplineIncreaseKnotMultiplicity.svg|24px]] [[Sketcher_BSplineIncreaseKnotMultiplicity|B-spline increase knot multiplicity]]}} or {{Button|[[File:Sketcher_BSplineDecreaseKnotMultiplicity.svg|24px]] [[Sketcher_BSplineDecreaseKnotMultiplicity|B-spline decrease knot multiplicity]]}}.
Para cambiar la multiplicidad de nudos, utilice los botones de la barra de herramientas {{Button|[[File:Sketcher_BSplineIncreaseKnotMultiplicity.svg|24px]] [[Sketcher_BSplineIncreaseKnotMultiplicity/es|B-spline aumenta la multiplicidad de nudos]]}} o {{Button|[[File:Sketcher_BSplineDecreaseKnotMultiplicity.svg|24px]] [[Sketcher_BSplineDecreaseKnotMultiplicity/es|B-spline disminuye la multiplicidad de los nudos]]}}.


'''Note:''' Creating two B-Splines that are connected to each other will not unite to a single new B-spline. So their connection point is not a knot. The only way to get a new knot in an existing B-spline is to decrease the degree. However, you may get many new knots. Thus the better choice is to redraw the B-spline with more control points.
'''Nota:''' La creación de dos B-Splines conectadas entre no se unirá a una sola B-spline nueva. Por lo tanto, su punto de conexión no es un nodo. La única manera de obtener un nuevo nodo en una B-spline existente es disminuir el grado. Sin embargo, puede obtener muchos nudos nuevos. Por tanto, la mejor opción es redibujar la B-spline con más puntos de control.


<span id="Changing_the_Weight"></span>
=== Cambiar el peso ===
=== Cambiar el peso ===


Alrededor de cada punto de control se ve un círculo amarillo oscuro. Su radio establece el peso del punto de control correspondiente. Por defecto todos los círculos tienen el radio ''1''. Esto se indica con una restricción de radio para el primer círculo del punto de control.
Around every control point you see a dark yellow circle. Its radius sets the weight for the corresponding control point. By default all circles have the radius ''1''. This is indicated with a radius constraint for the first control point circle.


To create a non-uniform B-spline the weights have to be non-uniform. To achieve that you can either change the [[Sketcher_ConstrainRadius|radius constraint]] of the first control point circle:
To create a rational B-spline the weights have to be made independent. To achieve that you can delete the constraint that all circles are equal and then set different radius constraints for the circles.


Si no se establece ninguna restricción de radio, también se puede cambiar el radio arrastrando:
[[File:Sketcher_Changing-control-point-weigth-constraint.gif]]


[[File:Sketcher_Changing-control-point-weigth-dragging.gif]]
or you delete the constraint that all circles are equal and then set different radius constraints for the circles.


En el ejemplo de arrastre se ve que un peso alto atrae la curva hacia el punto de control mientras que un peso muy bajo cambia la curva como si el punto de control casi no existiera.
If no radius constraint is set, you can also change the radius by dragging:


<div class="mw-translate-fuzzy">
[[File:Sketcher_Changing-control-point-weigth-dragging.gif]]
Cuando miras la [[#B-splines_no-uniformes|función de creación]] para B-splines racionales no uniformes ves que un peso de cero llevaría a una división por cero. Por lo tanto, sólo se pueden especificar pesos mayores que cero.
</div>


'''Note:''' When dragging points, knots or widths, the circle diameters denoting the weight will change. This is because the diameter depends on the overall B-spline length for visualization reasons. The actual weight is not changed.
In the dragging example you see that a high weight attracts the curve to the control point while a very low weight changes the curve so as if the control point does almost not exist.


=== Editing Knots ===
When you look at the [[#Non-uniform_B-splines|creation function]] for non-uniform rational B-splines you see that a weight of zero would lead to a division by zero. Therefore you can only specify weights greater than zero.


New knots can be added using the {{Button|[[File:Sketcher_BSplineInsertKnot.svg|24px]] [[Sketcher_BSplineInsertKnot|B-spline insert knot]]}} button. {{Version|0.20}}

A knot is deleted by decreasing it's degree to 0 (i.e applying {{Button|[[File:Sketcher_BSplineDecreaseKnotMultiplicity.svg|24px]] [[Sketcher_BSplineDecreaseKnotMultiplicity|B-spline decrease knot multiplicity]]}} when it's degree is 1).

Changing the parameter value of a knot is not yet supported.

<span id="Display_Information"></span>
=== Mostrar Información ===
=== Mostrar Información ===


Since the form of a B-spline does not tell much about its properties, FreeCAD offers [[Sketcher_Workbench#Sketcher_B-spline_tools|different tools]] to display the properties:
Como la forma de una B-spline no dice mucho sobre sus propiedades, FreeCAD ofrece [[Sketcher_Workbench/es#Herramientas de la B-spline de Sketcher|diferentes herramientas]] para mostrar las propiedades:


{| class="wikitable float-right"
{| class="wikitable float-right"
|Propiedad
|Property
|Botón de la barra de herramientas
|Toolbar button
|-
|-
| '''Degree'''
| '''Grado'''
| {{Button|[[File:Sketcher_BSplineDegree.svg|16px]] [[Sketcher_BSplineDegree|Show/Hide B-spline degree]]}}
| {{Button|[[File:Sketcher_BSplineDegree.svg|16px]] [[Sketcher_BSplineDegree/es|Mostrar/ocultar el polígono de control de la B-spline]]}}
|-
|-
| '''Control polygon'''
| '''Polígono de control'''
| {{Button|[[File:Sketcher_BSplinePolygon.svg|16px]] [[Sketcher_BSplinePolygon|Show/hide B-spline control polygon]]}}
| {{Button|[[File:Sketcher_BSplinePolygon.svg|16px]] [[Sketcher_BSplinePolygon/es|Mostrar/ocultar el polígono de control de la B-spline]]}}
|-
|-
| '''Curvature comb'''
| '''Peine de curvatura'''
| {{Button|[[File:Sketcher_BSplineComb.svg|16px]] [[Sketcher_BSplineComb|Show/hide B-spline curvature comb]]}}
| {{Button|[[File:Sketcher_BSplineComb.svg|16px]] [[Sketcher_BSplineComb/es|Mostrar/Ocultar peine de curvatura B-spline]]}}
|-
|-
| '''Knot multiplicity'''
| '''Multiplicidad de nudos'''
| {{Button|[[File:Sketcher_BSplineKnotMultiplicity.svg|16px]] [[Sketcher_BSplineKnotMultiplicity|Show/hide B-spline knot multiplicity]]}}
| {{Button|[[File:Sketcher_BSplineKnotMultiplicity.svg|16px]] [[Sketcher_BSplineKnotMultiplicity/es|Mostrar/Ocultar multiplicidad de nudos B-spline]]}}
|-
|-
| '''Weights'''
| '''Pesos'''
| {{Button|[[File:Sketcher_BSplinePoleWeight.svg|16px]] [[Sketcher_BSplinePoleWeight|Show/hide B-spline control point weight]]}}
| {{Button|[[File:Sketcher_BSplinePoleWeight.svg|16px]] [[Sketcher_BSplinePoleWeight/es|Mostrar/Ocultar el peso del punto de control de la B-spline]]}}
|}
|}


<span id="Limitations"></span>
=== Limitaciones ===
=== Limitaciones ===


<div class="mw-translate-fuzzy">
At the moment (FreeCAD 0.19) there are some limitations when using splines you should know:
De momento (FreeCAD 0.19) hay algunas limitaciones al usar splines que debes conocer:
# You cannot set tangential constraints.</br>In this example</br> [[File:Sketcher_spline-limit-tangential.png|450px]]</br> you want to assure that the spline touches the blue curve 2 times tangentially. This would be useful because the blue line could for example be the spatial border for your design.
# No puedes establecer restricciones tangenciales.</br>En este ejemplo</br> [[File:Sketcher_spline-limit-tangential.png|450px]]</br> quieres asegurar que la spline toca la curva azul 2 veces tangencialmente. Esto sería útil porque la línea azul podría ser, por ejemplo, el límite espacial para su diseño.
# You cannot insert a new control point between two selected existing control points. There is no other way than to redraw the spline.
# No se puede insertar un nuevo punto de control entre dos puntos de control existentes seleccionados. No hay otra forma que redibujar la spline.
# You cannot delete a control point. Also in this case you must redraw the spline
# No se puede eliminar un punto de control. También en este caso debe redibujar la spline
# You cannot create an offset curve for a B-spline using the tool [[Draft_Offset|Draft Offset]].
# No se puede crear una curva de desplazamiento para una B-spline utilizando la herramienta [[Draft_Offset/es|Borrador Desplazamiento]].
</div>


<span id="Typical_Use_Cases"></span>
== Casos típicos de uso ==
== Casos típicos de uso ==


Line 232: Line 284:
#Curvas que proporcionan una cierta continuidad (derivada). Véase [[#Continuidad en las transiciones geométricas|este ejemplo]] más abajo.
#Curvas que proporcionan una cierta continuidad (derivada). Véase [[#Continuidad en las transiciones geométricas|este ejemplo]] más abajo.


<span id="Designing"></span>
=== Diseño ===
=== Diseño ===


Line 242: Line 295:
[[File:Sketcher_spline-exmple-mixer-sketch.gif]]
[[File:Sketcher_spline-exmple-mixer-sketch.gif]]


<span id="Continuity_at_Geometric_Transitions"></span>
=== Continuidad en las transiciones geométricas ===
=== Continuidad en las transiciones geométricas ===


Hay varios casos en los que es físicamente necesario tener una cierta continuidad superficial en las transiciones geométricas. Tomemos por ejemplo las paredes interiores de un canal de fluido. Cuando tienes un cambio en el diámetro del canal, no quieres tener un borde porque los bordes introducirían turbulencias. Por lo tanto, como en el ejemplo de motivación [[#Motivación|arriba]], uno utiliza splines para este propósito.
There are several cases where it is physically necessary to have a certain surface continuity at geometric transitions. Take for example the inner walls of a fluid channel. When you have a change in the diameter of the channel, you don't want to have an edge because edges would introduce turbulences. Therefore, like in the motivation example [[#Motivation|above]], one uses splines for this purpose.


El desarrollo de las curvas de Bézier fue impulsado inicialmente por la industria automovilística francesa. Además del ahorro de material y la reducción de la resistencia al flujo de aire, también había que mejorar el aspecto de los coches. Y cuando se observa el elegante diseño de los coches franceses de los años 60 y 70 se ve que las curvas de Bézier dieron un impulso al diseño de los coches.
The development of the Bézier curves was initially triggered by the French car industry. Besides the saving of material and the reduction of the air flow drag, the look of the cars should also be improved. And when you look at the fancy design of French cars from the 60's and 70's you see that the Bézier curves gave car design a boost.


Tomemos como ejemplo esta tarea en el diseño de coches: El guardabarros del coche debe "tener un buen aspecto". He aquí un croquis básico de nuestra tarea:
Let's take for example this task in the design of cars: The car fender should "look nice". Here is a basic sketch of our task:


[[File:Spline-Fender-sketch1.svg|250px]]
[[File:Spline-Fender-sketch1.svg|250px]]


"Tener un buen aspecto" significa que el cliente (potencial) mire el guardabarros y no vea reflejos de luz inesperados ni tampoco cambios repentinos en el reflejo de la pintura del automóvil. Entonces, ¿qué se necesita para evitar cambios en los reflejos? Mirar de cerca el guardabarros:
"Looking nice" means that the (potential) customer looks at the fender and does not see unexpected light reflections and also no sudden changes in the reflection from the automotive paint at all. So what do you need to avoid changes in the reflections? Looking closely to the fender:


[[File:Spline-Fender-sketch2.svg|300px]]
[[File:Spline-Fender-sketch2.svg|300px]]
{{Caption|En el área espacial por encima del borde, la intensidad de la luz reflejada es baja (denotada por la elipse roja) porque no se refleja luz directamente en la dirección del borde al ojo.}}
{{Caption|At the spatial area above the edge the intensity of reflected light is low (denoted by the red ellipse) because no light is directly reflected in the direction from the edge to the eye.}}


Cuando hay un borde, hay una zona espacial en la que la luz reflejada tiene menos intensidad y esto es lo que se nota al mirar el guardabarros. Para evitar esto necesitas un cambio continuo en la pendiente de tus elementos de superficie. La pendiente es la derivada de primer orden y como se explica en la sección [[#Basicos|Basicos]], una B-spline de segundo grado (cuadrática) ofrece en cada punto una derivada continua de primer orden.
you see when there is an edge, there is a spatial area where the reflected light has less intensity and this is what you will notice when looking at the fender. To avoid this you need a continuous change in the slope of your surface elements. The slope is the first order derivative and as explained in section [[#Basics|Basics]], a second degree (quadratic) B-spline offers at every point a continuous first order derivative.


¿Pero es esto realmente suficiente? En el punto de transición geométrica tenemos ahora en ambos lados la misma pendiente, pero la pendiente puede cambiar de forma diferente en ambos lados. Entonces tenemos esta situación:
But is this really sufficient? At the point of geometric transition we have now at both sides the same slope, but the slope might change differently at both sides. Then we have this situation:


[[File:Spline-Fender-sketch3.svg|300px]]
[[File:Spline-Fender-sketch3.svg|300px]]

Latest revision as of 10:29, 31 March 2024

Other languages:

Esta página describe cómo utilizar las B-splines en FreeCAD. También ofrece información sobre qué son las B-splines y para qué aplicaciones son útiles.

Motivación

Si ya conoces las B-splines y su aplicación, puedes continuar directamente con la sección B-splines en FreeCAD.

Supongamos que quiere diseñar una pieza que debe producirse con una impresora 3D. La pieza debe tener un borde de esta manera:

Hay que imprimir la pieza en dirección de la parte inferior del boceto hacia la parte superior. Las estructuras de soporte externas pueden no ser una opción. Por lo tanto, tiene que añadir un soporte directamente a su pieza. ¿Qué opciones tiene?

  • Opción 1: se podría añadir una línea desde el punto (20, 0) hasta el punto (80, 40):

Sin embargo, esta solución necesita mucho volumen y, por tanto, peso y material.

  • Opción 2: puedes conectar los dos puntos con un arco de círculo. Para ahorrar volumen, el arco debe terminar tangencialmente en el punto (80,40). Entonces tu solución se ve así:

BIEN. Pero en el fondo no necesitas apoyo inmediato.

  • Opción 3: se podría ahorrar algo más de volumen si la conexión entre los 2 puntos es una curva que empieza tangencialmente en (0, 20) y termina tangencialmente en (80, 40):

Así, una curva con la que se puedan conectar dos puntos tangencialmente a un punto de referencia puede ser muy útil para las construcciones. Las curvas de Bézier ofrecen esta característica.

Curvas Bézier

Derivación

Curvas de Bézier son polinomios que describen la conexión entre 2 puntos. El polinomio más sencillo que conecta 2 puntos es una recta () por lo que también las curvas de Bézier lineales son lineales:

Animación 1: Curva de Bézier lineal.

Sin embargo, un polinomio se vuelve primero útil cuando podemos controlarlo. Así que debe haber un punto entre los 2 puntos finales que nos permita definir cómo se conectan los puntos finales. Como en la opción 3 del ejemplo anterior, la curva es útil cuando comienza y termina tangencialmente a las líneas que cruzan los puntos finales. Y esta es una característica principal de las curvas Bézier. Así que vamos a añadir un punto de control entre los 2 puntos finales. La curva comenzará tangencialmente hacia este punto de control, lo que significa que es tangencial a la línea que podemos dibujar entre el punto inicial y el punto de control. Yendo hacia atrás desde el punto final, la curva también será tangente a la línea que podemos dibujar entre el punto de control y el punto final. La animación 2 muestra el aspecto de esta curva.

{{Caption|Animación 2: Curva cuadrática de Bézier. P1 es el punto de control.}

La animación aclara lo que es básicamente la curva: una transición de P0 a P2 al girar la línea P0-P1 para convertirse en la línea P1-P2. Por lo tanto, obtenemos la bonita característica de inicio/fin tangencial.

Una curva de este tipo sólo puede ser descrita por un polinomio cuadrático. (El número de vueltas a la izquierda/derecha + 1 es el orden necesario del polinomio. Un polinomio cuadrático tiene una sola vuelta, un polinomio cúbico tiene dos vueltas, y así sucesivamente). Por lo tanto, una curva de Bézier con un punto de control es una curva de Bézier cuadrática (de segundo orden).

Tener un solo punto de control a menudo no es suficiente. Tomemos el ejemplo de la motivación anterior. Allí, en la opción 3, terminamos la curva tangencialmente en la dirección x. ¿Pero cómo se pueden conectar los puntos (20, 0) y (80, 40) para que la curva termine tangencialmente en la dirección y? Para conseguirlo se necesita primero un giro a la derecha y luego a la izquierda, es decir, un polinomio cúbico (de tercer orden). Y eso significa que para una curva de Bézier necesitamos (o se puede decir que ganamos) un segundo punto de control. La animación 3 muestra una curva de Bézier cúbica.

Animación 3: Curva cúbica de Bézier.

Para responder a la pregunta, la solución con el final de la dirección y tangencial para el ejemplo es ésta:

Reglas

En el texto anterior ya habrás notado algunas "reglas" para las curvas de Bézier:

  • El grado del polinomio es también el grado de las curvas.
  • Si necesitas vueltas, necesitas al menos una curva de Bézier de grado.
  • Una curva de Bézier siempre comienza tangencialmente a la línea entre el punto inicial y el primer punto de control (y termina tangencialmente a la línea entre el último punto de control y el punto final).

Matemáticas

Si estás interesado en entender las matemáticas de fondo, aquí tienes lo básico.

Una curva de Bézier se calcula con esta fórmula:

n es por tanto el grado de la curva. Así, una curva de Bézier de grado n es un polígono de orden n. Los factores son, de hecho, las coordenadas de los puntos de control de las curvas de Bézier. Para una visualización, véase Control de las curvaturas de Bézier.

Si le interesa más, eche un vistazo a Las matemáticas de las curvas de Bézier con una derivación muy bien animada de las matemáticas de las curvas de Bézier.

B-Splines

Básicos

Este vídeo enumera al principio los problemas prácticos de las curvas de Bézier. Por ejemplo, que al añadir o cambiar un punto de control se modifica toda la curva. Estos problemas se pueden resolver uniendo varias curvas de Bézier. El resultado es un llamado spline, en particular un B-spline (spline de base). El vídeo también explica que una unión de curvas de Bézier cuadráticas forma un B-spline cuadrático uniforme y que una unión de curvas de Bézier cúbicas forma un B-spline cúbico uniforme.

De los vídeos podemos recoger "reglas" útiles para las B-splines:

  • El primer y último punto de control es el punto final/inicial de la spline.
  • Al igual que para las curvas de Bézier, las splines siempre comienzan tangencialmente a la línea entre el punto de inicio y el primer punto de control (y terminan tangencialmente a la línea entre el último punto de control y el punto final).
  • Una unión de curvas de Bézier con el grado tiene puntos de control.
    • Dado que en la mayoría de los casos se trabaja con B-splines cúbicas podemos afirmar entonces que puntos de control conducen a segmentos de Bézier y a su vez puntos de unión de segmentos.
  • Una B-spline de grado ofrece en cada punto una derivada continua de orden .
    • Para una B-spline cúbica esto significa que la curvatura (derivada de segundo orden) no cambia al viajar de un segmento al siguiente. Esta es una característica muy útil como veremos más adelante.

Si está interesado en más detalles sobre las propiedades de la B-Spline, eche un vistazo al vídeo MOOC Curvas 8.2: Propiedades de las curvas B-spline.

Basis

Since we will only introduce the basics of B-spline, we don't go here into the details.

The basis constructs the spline. Looking at the definition of Bézier curves in section Math we remember that a Bézier curve is a linear combination of polynomials with the x/y coordinate of each of the control points as a factor. These polynomials are called Bernstein polynomials.

As several Bézier curves are combined to form a spline, we get a set of Bernstein polynomials forming the spline (they are the basis). As we want to overcome the mentioned limitations of Bézier curves, we don't geometrically combine the different Bernstein polynomials of the Bézier curves, but define Bernstein polynomials over the whole geometrical range of the spline. So we don't combine the Bézier curves with its Bernstein polynomials, which would be

whereas is the i-th Bernstein polynomial with order and the coefficients are the point coordinates of the Bézier curve control points. But we use a different set of functions that are defined over the whole spline range:

.

Note that in general , and the Bezier control points are different from B-spline control points .

The different are defined piecewise where the interval of every piece is the interval of the Bézier piece.

When the lengths of all pieces is equal, we speak of a uniform spline. (In literature this is often denoted as equal travel time per piece.)

To understand how the are the coordinates of the B-spline control points, see the first minute of this video.

Knot vector

As derived above, B-splines are created out of piecewise polynomials with continuity up to a certain derivative between the pieces. The endpoints of the piece's definition interval are called knots. For a spline defined over pieces, there are knots given by the so-called knot vector:
whereas

The knot vector comprises the knots of the basis functions that define the B-spline, see this video. The basis functions of a B-spline can be calculated using the knot vector and a creation algorithm, see this video.

The derivative until which continuity exists is given by the multiplicity . Therefore we can specify a vector with the multiplicity for every knot: . A knot on a spline with degree d and the multiplicity m tells that the curve left and right to the knot has at least an equal n order derivative (called Cn continuity) whereas .

B-splines no-uniformes

Una propiedad de los polinomios de Bernstein es que cuando se observan las diferentes partes de la S-spline Bézier, la longitud del recorrido de cada parte es la misma. (La longitud de la trayectoria suele llamarse tiempo de recorrido). Como puedes imaginar, puede ser útil tener B-splines cuyas partes Bézier tengan diferentes longitudes de trayectoria. Esto puede lograrse ponderando los diferentes polinomios:

Mathematically this is achieved by defining the different pieces at different intervals. If for example a B-spline is defined for the interval [0, 1], it is uniform if all its e.g. 5 pieces are also defined in this interval. If now is only defined in the interval [0, 0.6] (outside the interval it is set to zero), it is shorter and thus the spline becomes non-uniform.

As described above the parameters of the knots are described by the knot vector. So the knot vector stores the definition intervals. When now one piece gets another interval, also the knot vector changes, see this video for a visualization.

Rational B-splines

A further generalization can be made for B-splines by introducing weights for the control points. This way it can be controlled "how important" a control point is.

The equation for such a spline is

Notice that the function is no longer a polynomial, but a rational function, and these splines are called rational B-splines. Observe that when all are equal, the equation reduces to a regular non-rational B-spline. So non-rational B-splines are a subset of rational B-splines.

Estas B-splines no-uniformes y racionales (por la división) suelen llamarse NURBS'. Observando su fórmula, vemos que en realidad son una B-spline con una base ponderada :

B-splines en FreeCAD

FreeCAD ofrece la posibilidad de crear B-splines uniformes o no uniformes de cualquier grado en 2D a través del Ambiente de trabajo Croquizador.

Creación

Para crear B-splines, entra en un sketch y utiliza el botón de la barra de herramientas Crear B-spline. A continuación, haz clic con el botón izquierdo para establecer un punto de control, mueve el ratón con el botón izquierdo para establecer el siguiente punto de control y así sucesivamente. Finalmente, haz clic con el botón derecho para terminar la definición y crear la B-spline.

Por defecto se crean splines cúbicas uniformes, excepto que no hay suficientes puntos de control para hacerlo. Así que cuando se crea una B-splinecon sólo 2 puntos de control, se obtiene por supuesto una spline que es curva lineal simple de Bézier, para 3 puntos de control se obtiene una curva cuadrática de Bézier, primero con 5 puntos de control se obtiene una spline B cúbica que consiste en 2 segmentos de Bézier.

Para crear B-splines periódicas (B-splines que forman una curva cerrada), utiliza el botón de la barra de herramientas B-spline periódica. No es necesario fijar el último punto de control sobre el primero porque la B-spline se cerrará automáticamente:

Las B-splines también pueden generarse a partir de segmentos de croquis existentes. Para ello, seleccione los elementos y pulse el botón de la barra de herramientas Convertir geometría en B-spline.

While creating a B-spline, its degree can be specified by pressing the D key. With this, the default to create a cubic B-spline if possible, can be overridden. introduced in version 0.20

Cambio de grado

Para cambiar el grado, seleccione la B-spline y utilice el botón de la barra de herramientas Aumentar grado de la B-spline o Decrementar grado de B-spline.

Nota: Disminuir el grado no puede revertir un aumento anterior del grado, ver la página Wiki Disminuir el grado de la B-spline para una explicación.

Cambiar la multiplicidad de nudos

Los puntos donde se conectan dos curvas Bézier para formar la B-spline se llaman nudos. La multiplicidad de nudos determina cómo se conectan las partes de Bézier, vea la página Wiki Aumentar multiplicidad de nudos para más detalles.

Para cambiar la multiplicidad de nudos, utilice los botones de la barra de herramientas B-spline aumenta la multiplicidad de nudos o B-spline disminuye la multiplicidad de los nudos.

Nota: La creación de dos B-Splines conectadas entre sí no se unirá a una sola B-spline nueva. Por lo tanto, su punto de conexión no es un nodo. La única manera de obtener un nuevo nodo en una B-spline existente es disminuir el grado. Sin embargo, puede obtener muchos nudos nuevos. Por tanto, la mejor opción es redibujar la B-spline con más puntos de control.

Cambiar el peso

Alrededor de cada punto de control se ve un círculo amarillo oscuro. Su radio establece el peso del punto de control correspondiente. Por defecto todos los círculos tienen el radio 1. Esto se indica con una restricción de radio para el primer círculo del punto de control.

To create a rational B-spline the weights have to be made independent. To achieve that you can delete the constraint that all circles are equal and then set different radius constraints for the circles.

Si no se establece ninguna restricción de radio, también se puede cambiar el radio arrastrando:

En el ejemplo de arrastre se ve que un peso alto atrae la curva hacia el punto de control mientras que un peso muy bajo cambia la curva como si el punto de control casi no existiera.

Cuando miras la función de creación para B-splines racionales no uniformes ves que un peso de cero llevaría a una división por cero. Por lo tanto, sólo se pueden especificar pesos mayores que cero.

Note: When dragging points, knots or widths, the circle diameters denoting the weight will change. This is because the diameter depends on the overall B-spline length for visualization reasons. The actual weight is not changed.

Editing Knots

New knots can be added using the B-spline insert knot button. introduced in version 0.20

A knot is deleted by decreasing it's degree to 0 (i.e applying B-spline decrease knot multiplicity when it's degree is 1).

Changing the parameter value of a knot is not yet supported.

Mostrar Información

Como la forma de una B-spline no dice mucho sobre sus propiedades, FreeCAD ofrece diferentes herramientas para mostrar las propiedades:

Propiedad Botón de la barra de herramientas
Grado Mostrar/ocultar el polígono de control de la B-spline
Polígono de control Mostrar/ocultar el polígono de control de la B-spline
Peine de curvatura Mostrar/Ocultar peine de curvatura B-spline
Multiplicidad de nudos Mostrar/Ocultar multiplicidad de nudos B-spline
Pesos Mostrar/Ocultar el peso del punto de control de la B-spline

Limitaciones

De momento (FreeCAD 0.19) hay algunas limitaciones al usar splines que debes conocer:

  1. No puedes establecer restricciones tangenciales.
    En este ejemplo

    quieres asegurar que la spline toca la curva azul 2 veces tangencialmente. Esto sería útil porque la línea azul podría ser, por ejemplo, el límite espacial para su diseño.
  2. No se puede insertar un nuevo punto de control entre dos puntos de control existentes seleccionados. No hay otra forma que redibujar la spline.
  3. No se puede eliminar un punto de control. También en este caso debe redibujar la spline
  4. No se puede crear una curva de desplazamiento para una B-spline utilizando la herramienta Borrador Desplazamiento.

Casos típicos de uso

Según las propiedades de las B-splines, hay 3 casos de uso principales:

  1. Curvas que comienzan/terminan tangencialmente a una determinada dirección. Un ejemplo de esto es el ejemplo de motivación arriba.
  2. Curvas que describen diseños más grandes y proporcionan la libertad de cambios locales. Véase este ejemplo más abajo.
  3. Curvas que proporcionan una cierta continuidad (derivada). Véase este ejemplo más abajo.

Diseño

Tomemos por ejemplo el caso de que usted diseñe la carcasa de una batidora de cocina. Su forma deseada debe ser como esta:

Para definir la forma exterior es ventajoso utilizar una B-spline porque cuando se cambia un punto de control para cambiar la curvatura en la parte inferior, la curvatura en el lado y la parte superior no se cambiará:

Continuidad en las transiciones geométricas

Hay varios casos en los que es físicamente necesario tener una cierta continuidad superficial en las transiciones geométricas. Tomemos por ejemplo las paredes interiores de un canal de fluido. Cuando tienes un cambio en el diámetro del canal, no quieres tener un borde porque los bordes introducirían turbulencias. Por lo tanto, como en el ejemplo de motivación arriba, uno utiliza splines para este propósito.

El desarrollo de las curvas de Bézier fue impulsado inicialmente por la industria automovilística francesa. Además del ahorro de material y la reducción de la resistencia al flujo de aire, también había que mejorar el aspecto de los coches. Y cuando se observa el elegante diseño de los coches franceses de los años 60 y 70 se ve que las curvas de Bézier dieron un impulso al diseño de los coches.

Tomemos como ejemplo esta tarea en el diseño de coches: El guardabarros del coche debe "tener un buen aspecto". He aquí un croquis básico de nuestra tarea:

"Tener un buen aspecto" significa que el cliente (potencial) mire el guardabarros y no vea reflejos de luz inesperados ni tampoco cambios repentinos en el reflejo de la pintura del automóvil. Entonces, ¿qué se necesita para evitar cambios en los reflejos? Mirar de cerca el guardabarros:

En el área espacial por encima del borde, la intensidad de la luz reflejada es baja (denotada por la elipse roja) porque no se refleja luz directamente en la dirección del borde al ojo.

Cuando hay un borde, hay una zona espacial en la que la luz reflejada tiene menos intensidad y esto es lo que se nota al mirar el guardabarros. Para evitar esto necesitas un cambio continuo en la pendiente de tus elementos de superficie. La pendiente es la derivada de primer orden y como se explica en la sección Basicos, una B-spline de segundo grado (cuadrática) ofrece en cada punto una derivada continua de primer orden.

¿Pero es esto realmente suficiente? En el punto de transición geométrica tenemos ahora en ambos lados la misma pendiente, pero la pendiente puede cambiar de forma diferente en ambos lados. Entonces tenemos esta situación:

Por lo tanto, también tenemos zonas espaciales en las que la intensidad de la luz reflejada es diferente. Para evitar esto, necesitamos en el punto geométrico de transición también una continuidad de la derivada de segundo orden y, por tanto, una B-spline cúbica.