buffalo_wings.airfoil.SplineCurve
- class buffalo_wings.airfoil.SplineCurve(*, curve)[source]
Bases:
CurveBezier-backed spline curve runtime for open section geometry.
Notes
This runtime is intentionally backend-neutral in name while the first supported schema slice stores Bezier control points directly.
Methods
arc_length(u_s, u_e)Calculate the arc-length distance between two points on surface.
Return the breakpoint locations in arc-length coordinates.
breakpoint_parameter_limits(*, index)Return parameter limits for one breakpoint.
Return the native endpoint breakpoints for the open curve.
k(u)Calculate the curvature at parameter location.
normal(u)Calculate the unit normal at parameter location.
tangent(u)Calculate the unit tangent at parameter location.
u_from_s(s)Calculate the parametric value for arc-length provided.
xy_from_s(s)Return curve coordinates at arc-length locations.
xy_from_u(u)Evaluate open-curve coordinates at native parameter values.
xy_s(s)Calculate first derivatives at arc-length location.
xy_s_breakpoint(*, index)Return both sides of first derivatives at a breakpoint.
xy_ss(s)Calculate second derivatives at arc-length location.
xy_ss_breakpoint(*, index)Return one-sided second derivatives at a breakpoint.
xy_u(u)Evaluate first derivatives at native parameter values.
xy_u_breakpoint(*, index)Return both sides of first derivatives at one breakpoint.
xy_uu(u)Evaluate second derivatives at native parameter values.
xy_uu_breakpoint(*, index)Return one-sided second derivatives at one breakpoint.
Attributes
Return the underlying Bezier curve representation.
Return the total curve length.
- property curve: BezierCurve2D
Return the underlying Bezier curve representation.
- xy_from_u(u)[source]
Evaluate open-curve coordinates at native parameter values.
- Return type:
tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatArray’), TypeAliasForwardRef(‘buffalo_core.typing.FloatArray’)]
- xy_u(u)[source]
Evaluate first derivatives at native parameter values.
- Return type:
tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatArray’), TypeAliasForwardRef(‘buffalo_core.typing.FloatArray’)]
- xy_uu(u)[source]
Evaluate second derivatives at native parameter values.
- Return type:
tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatArray’), TypeAliasForwardRef(‘buffalo_core.typing.FloatArray’)]
- breakpoints()[source]
Return the native endpoint breakpoints for the open curve.
- Return type:
list[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)]
- arc_length(u_s, u_e)
Calculate the arc-length distance between two points on surface.
- Parameters:
u_s (
buffalo_core.typing.FloatScalar) – Start point of distance calculation.u_e (
buffalo_core.typing.FloatInput) – End point of distance calculation.
- Returns:
Distance from start point to end point.
- Return type:
buffalo_core.typing.FloatArray
- arc_length_breakpoints()
Return the breakpoint locations in arc-length coordinates.
- Returns:
Arc-length coordinates measured from the minimum native parameter.
- Return type:
list[FloatScalar]
Notes
These values include the two curve endpoints as boundary markers. Interior breakpoints correspond to the native-parameter interior breakpoints returned by
breakpoints().
- breakpoint_parameter_limits(*, index)
Return parameter limits for one breakpoint.
Notes
Endpoint breakpoints return the exact boundary parameter. Interior breakpoints return nearby one-sided parameters chosen within the neighboring breakpoint interval for the current generic breakpoint-side implementation. These limits exist to support the sampled fallback in the generic
*_breakpointmethods and should not be treated as the primary source of truth when a subclass can provide exact one-sided values directly.- Return type:
tuple[TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’), TypeAliasForwardRef(‘buffalo_core.typing.FloatScalar’)]
- k(u)
Calculate the curvature at parameter location.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Parameter for desired locations.- Returns:
Curvature of surface matching the normalized shape of
u.- Return type:
buffalo_core.typing.FloatArray
- property length: buffalo_core.typing.FloatScalar
Return the total curve length.
- Returns:
Arc length measured from the minimum to maximum native parameter.
- Return type:
buffalo_core.typing.FloatScalar
- normal(u)
Calculate the unit normal at parameter location.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Parameter for desired locations.- Returns:
Tuple
(n_x, n_y)offloat64arrays matching the normalized shape ofu.- Return type:
tuple[FloatArray,FloatArray]
- tangent(u)
Calculate the unit tangent at parameter location.
- Parameters:
u (
buffalo_core.typing.FloatInput) – Parameter for desired locations.- Returns:
Tuple
(t_x, t_y)offloat64arrays matching the normalized shape ofu.- Return type:
tuple[FloatArray,FloatArray]
- u_from_s(s)
Calculate the parametric value for arc-length provided.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc-length location of point.- Returns:
Parametric value matching the normalized shape of
s.- Return type:
buffalo_core.typing.FloatArray- Raises:
ValueError – When arc-length provided lies outside the curve arc-length range.
- xy_from_s(s)
Return curve coordinates at arc-length locations.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc length location of point.- Returns:
(x, y)coordinates matching the normalized shape ofs.- Return type:
tuple[FloatArray,FloatArray]
- xy_s(s)
Calculate first derivatives at arc-length location.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc length location of point.- Returns:
(dx/ds, dy/ds)coordinates matching the normalized shape ofs.- Return type:
tuple[FloatArray,FloatArray]
Notes
If
smatches one ofarc_length_breakpoints()exactly, this method returns theminus-side derivative limit. Subclasses should overridexy_s_breakpoint()when exact one-sided breakpoint derivatives are available analytically.
- xy_s_breakpoint(*, index)
Return both sides of first derivatives at a breakpoint.
- Parameters:
index (
int) – Index intoarc_length_breakpoints().- Returns:
((x_s_minus, y_s_minus), (x_s_plus, y_s_plus)).- Return type:
CurveBreakpointSides
Notes
Endpoint breakpoints return the same boundary value for both entries. This method is the exact-breakpoint contract that pairs with
xy_s(). Subclasses should override it whenever exact one-sided arc-length derivatives are available. The generic implementation evaluates nearby one-sided native- parameter samples and therefore serves only as an approximation fallback.
- xy_ss(s)
Calculate second derivatives at arc-length location.
- Parameters:
s (
buffalo_core.typing.FloatInput) – Arc length location of point.- Returns:
(d^2x/ds^2, d^2y/ds^2)coordinates matching the normalized shape ofs.- Return type:
tuple[FloatArray,FloatArray]
Notes
If
smatches one ofarc_length_breakpoints()exactly, this method returns theminus-side derivative limit. Subclasses should overridexy_ss_breakpoint()when exact one-sided breakpoint second derivatives are available analytically.
- xy_ss_breakpoint(*, index)
Return one-sided second derivatives at a breakpoint.
- Parameters:
index (
int) – Index intoarc_length_breakpoints().- Returns:
((x_ss_minus, y_ss_minus), (x_ss_plus, y_ss_plus)).- Return type:
CurveBreakpointSides
Notes
Endpoint breakpoints return the same boundary value for both entries. This method is the exact-breakpoint contract that pairs with
xy_ss(). Subclasses should override it whenever exact one-sided arc-length second derivatives are available. The generic implementation evaluates nearby one-sided native- parameter samples and therefore serves only as an approximation fallback.
- xy_u_breakpoint(*, index)
Return both sides of first derivatives at one breakpoint.
- Parameters:
index (
int) – Index intobreakpoints().- Returns:
((x_u_minus, y_u_minus), (x_u_plus, y_u_plus)).- Return type:
CurveBreakpointSides
Notes
Endpoint breakpoints return the same boundary value for both entries. This method is the exact-breakpoint contract that pairs with
xy_u(). Subclasses should override it whenever they can return exact one-sided derivative values. The generic implementation evaluates nearby one-sided parameter samples and therefore serves only as an approximation fallback.
- xy_uu_breakpoint(*, index)
Return one-sided second derivatives at one breakpoint.
- Parameters:
index (
int) – Index intobreakpoints().- Returns:
((x_uu_minus, y_uu_minus), (x_uu_plus, y_uu_plus)).- Return type:
CurveBreakpointSides
Notes
Endpoint breakpoints return the same boundary value for both entries. This method is the exact-breakpoint contract that pairs with
xy_uu(). Subclasses should override it whenever they can return exact one-sided second-derivative values. The generic implementation evaluates nearby one-sided parameter samples and therefore serves only as an approximation fallback.