Jean Abou Samra <j...@abou-samra.fr> writes: > Le 20/09/2021 à 23:31, David Kastrup a écrit : >> Jean Abou Samra <j...@abou-samra.fr> writes: >> >>> Thoughts? One would have to look at the most typical use cases >>> to decide on an interface. >> Anything wrong with using a ly:transform? type? It's straightforward to >> create and manipulate. > > I had already forgotten about those. Given sufficient > documentation, it would probably work well.
I find in the IR: -- Function: ly:make-transform xx yx xy yy x0 y0 Create a transform. Without options, it is an identity transform. Given four arguments XX, YX, XY, and YY, it is a linear transform, given six arguments (with X0 and Y0 last), it is an affine transform. Transforms can be called as functions on other transforms (concatening them) or on points given either as complex number or real number pair. See also ‘ly:make-rotation’, ‘ly:make-scaling’, and ‘ly:make-translation’. -- Function: ly:transform? x Is X a ‘Transform’ object? -- Function: ly:transform->list transform Convert a transform matrix to a list of six values. Values are XX, YX, XY, YY, X0, Y0. -- Function: ly:make-translation x y Make a transform translating by X and Y. If only X is given, it can also be a complex number or a pair of numbers indicating the offset to use. -- Function: ly:make-rotation angle center Make a transform rotating by ANGLE in degrees. If CENTER is given as a pair of coordinates, it is the center of the rotation, otherwise the rotation is around (0 . 0). -- Function: ly:make-scaling scale scaley Create a scaling transform from argument SCALE and optionally SCALEY. When both arguments are given, they must be real and give the scale in X and Y direction. If only SCALE is given, it may also be complex to indicate a scaled rotation in the manner of complex number rotations, or a pair of reals for specifying different scales in X and Y direction like with the first calling convention. -- David Kastrup