Skip to content

Conversation

@dsberry
Copy link
Member

@dsberry dsberry commented Oct 13, 2025

Modify the AST library to include a new class of Mapping representing a two-dimensional B-spline transformation. Values for each of the two output axes will be generated using a separate B-spline (one for the X output and one for the Y output), each defined over two-dimensions. Consequently, the new Mapping will have two input axes and two output axes. Each of the two B-splines will be specified by the caller when constructing the Mapping, by supplying the order of the piecewise polynomials, the total number of knots, the knot positions and the B-spline coefficients for each input axis. The same polynomial order and knot positions will be used for the B-splines defining the two output axes, but the B-spline coefficients will be specified separately for each output axis. The inverse transformation will be determined using an iterative method based on the forward transformation defined by the specified B-splines). This requires that the output axis values represent the perturbed input axis values, rather than representing the perturbations themselves. It also requires that the perturbations be much smaller than the range of the input axis values. In other words, if the input axis values are (x,y), the output axis values are (u,v) and the perturbations in u and v are Pu(x,y) and Pv(x,y), then:

u = x + Pu(x,y)
v = y + Pv(x,y)

The perturbations should be sufficiently small to ensure that u always increases with x and that v always increases with y. The knots and coefficients of the B-splines supplied when the Mapping is constructed should ensure that the B-spline value represents the sum of the input axis value and the perturbation. For instance, the first supplied B-spline should have value (x+Pu(x,y) ) and not just Pu(x,y).

No functions for determining knot positions and/or B-spline coefficients from a supplied data array will be provided.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants