I was wondering if there is a way to model the sun pointing attitude with nadir constraint. The CelestialBodyPointed attitude aligns one of the axis with the sun and has a phasing constraint on the other.
What I would like to achieve is to align one of the axes with sun and the phasing axis needs to be constrained with nadir (instead of a fixed vector).
There is no direct way to do it now, but a simple fix would be to change the Vector3D phasingCel parameter in the CelestialBodyPointed to PVCoordinatesProvider target and to recompute the phasingCel direction in the getAttitude method by simply computing the direction from satellite to target.
Along the same lines, won’t it be easy to derive it from the YawSteering attitude provider, because that attitude mode is nothing but NadirPointing with Sun phasing right? Just the opposite of what I would like to achieve I guess.
You are right, YawSteering is nadir plus Sun phasing. However, since the exact pointing
vector (Sun in one case, nadir in the other case) are different, they deserve dedicated
implementations.
Thank you @Luc. I am currently heading in the similar lines suggested by you. But I feel it can be interesting to work out a generic interface, say TwoVectorAttitudeProvider, where in we need two vectors or vector providers (like PVCoordinatesProvider), one for pointing and other for phasing.
This will make sure the CelestialBodyPointed, NadirPointing and YawSteering can implement this particular interface and simplify. I will await for your thoughts on this.
Fine. You can open an feature request on our gitlab and assign it to yourself.
For the contribution, you can either attach your code to the request or fork the
repository and make a pull request.
Please take a look at the Contributor License Agreement in the appendices
of the Orekit Governance,
as we will need one for including your contribution.
Apologies I could not spend much time on the proposed solution. I should be able to take some time out in the next few weeks and will keep the thread updated when I start working on it.