Source code for aerocaps.examples.bezier_surface
import numpy as np
import aerocaps as ac
[docs]
def bezier_surface_2x3() -> ac.BezierSurface:
r"""
Creates a Bézier surface with degrees :math:`n=2` (three rows of control points in the :math:`u`-direction)
and :math:`m=3` (four rows of control points in the :math:`v`-direction).
Returns
-------
BezierSurface
The :math:`2 \times 3` Bézier surface
"""
# Create three rows of control points that each influence the surface shape in the v-direction
row_1 = np.array([
[0.0, 0.0, 0.0],
[0.3, 0.0, 0.1],
[0.6, 0.0, -0.1],
[1.0, 0.0, 0.0]
])
row_2 = np.array([
[0.0, 0.35, 0.0],
[0.3, 0.25, 0.2],
[0.6, 0.35, -0.2],
[1.0, 0.30, 0.3]
])
row_3 = np.array([
[0.0, 0.7, 0.2],
[0.3, 0.6, -0.1],
[0.6, 0.65, 0.3],
[1.0, 0.7, 0.2]
])
# Stack the rows into a matrix
control_points = np.stack((row_1, row_2, row_3), axis=0)
# Generate the surface from the array
surf = ac.BezierSurface(control_points)
return surf