RocketPy
RocketPy copied to clipboard
ENH: give me a scissor or apply `Function.clip` and `Function.crop`
Is your feature request related to a problem? Please describe.
Mutating Function objects is magical because sometimes we need to do some particular operations with them. This issue requests two new methods to create new Function objects from other array-based Function objects.
Describe the solution you'd like
Please implement the following:
- [ ]
Function.clip: limits they_arrayto a certain range, for instance, limit the sin function to be constrained between -1 an 1. This should delete any datapoint with the y value out of the range. - [ ]
Function.crop: limits thex_arrayto a certain range, for instance, limit the domain of a R1->R1 function to be limited by x=0 and x=1. This should delete any datapoint with the x values out of the range.
Some considerations:
- The methods should take the array source of the Function, remove the undesired data, return
- Once we remove data from the array and recreate a function object, all the interpolation coefficients will be recalculated. Should that be a problem?
I'm not sure how we would do (if possible) the same operations in non array-based Functions, so I'm leaving them out of the scope here.
Additional context
- numpy.clip
- https://stackoverflow.com/questions/43463523/center-crop-a-numpy-array
- This is already an implementation that can be used: https://github.com/RocketPy-Team/RocketPy/blob/d552093a3be062d2deb3f18ff5ff89774a295d5d/rocketpy/Function.py#L630