<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://patrius.cnes.fr/index.php?action=history&amp;feed=atom&amp;title=TwoDirectionsAttitudeLaw_4.5.1</id>
	<title>TwoDirectionsAttitudeLaw 4.5.1 - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://patrius.cnes.fr/index.php?action=history&amp;feed=atom&amp;title=TwoDirectionsAttitudeLaw_4.5.1"/>
	<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=TwoDirectionsAttitudeLaw_4.5.1&amp;action=history"/>
	<updated>2026-04-06T22:36:17Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://patrius.cnes.fr/index.php?title=TwoDirectionsAttitudeLaw_4.5.1&amp;diff=2655&amp;oldid=prev</id>
		<title>Admin : Page créée avec « &lt;syntaxhighlight lang=&quot;java&quot;&gt; public class TwoDirectionsAttitudeLaw {      public static void main(String[] args) throws PatriusException, IOException, URISyntaxException... »</title>
		<link rel="alternate" type="text/html" href="https://patrius.cnes.fr/index.php?title=TwoDirectionsAttitudeLaw_4.5.1&amp;diff=2655&amp;oldid=prev"/>
		<updated>2020-08-17T08:29:53Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt; public class TwoDirectionsAttitudeLaw {      public static void main(String[] args) throws PatriusException, IOException, URISyntaxException... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class TwoDirectionsAttitudeLaw {&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) throws PatriusException, IOException, URISyntaxException {&lt;br /&gt;
        &lt;br /&gt;
        // Patrius Dataset initialization (needed for example to get the UTC time&lt;br /&gt;
        PatriusDataset.addResourcesFromPatriusDataset() ;&lt;br /&gt;
&lt;br /&gt;
        // Recovery of the UTC time scale using a &amp;quot;factory&amp;quot; (not to duplicate such unique object)&lt;br /&gt;
        final TimeScale TUC = TimeScalesFactory.getUTC();&lt;br /&gt;
        &lt;br /&gt;
        // Date of the orbit given in UTC time scale)&lt;br /&gt;
        final AbsoluteDate date = new AbsoluteDate(&amp;quot;2010-01-01T12:00:00.000&amp;quot;, TUC);&lt;br /&gt;
        &lt;br /&gt;
        // Getting the frame with wich will defined the orbit parameters&lt;br /&gt;
        // As for time scale, we will use also a &amp;quot;factory&amp;quot;.&lt;br /&gt;
        final Frame GCRF = FramesFactory.getGCRF();&lt;br /&gt;
&lt;br /&gt;
        // Initial orbit&lt;br /&gt;
        final double sma = 7200.e+3;&lt;br /&gt;
        final double exc = 0.01;&lt;br /&gt;
        final double inc = FastMath.toRadians(98.);&lt;br /&gt;
        final double pa = FastMath.toRadians(0.);&lt;br /&gt;
        final double raan = FastMath.toRadians(0.);&lt;br /&gt;
        final double anm = FastMath.toRadians(0.);&lt;br /&gt;
        final double MU = Constants.WGS84_EARTH_MU;&lt;br /&gt;
        &lt;br /&gt;
        final KeplerianParameters par = new KeplerianParameters(sma, exc, inc, pa, raan, anm, PositionAngle.MEAN, MU);&lt;br /&gt;
        final Orbit iniOrbit = new KeplerianOrbit(par, GCRF, date);&lt;br /&gt;
        &lt;br /&gt;
        // Using the Meeus model for the Sun.&lt;br /&gt;
        final CelestialBody sun = new MeeusSun();&lt;br /&gt;
        &lt;br /&gt;
        // Sun directions&lt;br /&gt;
        ToCelestialBodyCenterDirection dirSun = new ToCelestialBodyCenterDirection(sun);&lt;br /&gt;
        CelestialBodyPolesAxisDirection dirPole = new CelestialBodyPolesAxisDirection(sun);&lt;br /&gt;
&lt;br /&gt;
        // Building an attitude law&lt;br /&gt;
        final Vector3D firstAxis = new Vector3D(1., 0., 0.);&lt;br /&gt;
        final Vector3D secondAxis = new Vector3D(0., 1., 0.);&lt;br /&gt;
        final AttitudeLaw attitudeLaw = new TwoDirectionsAttitude(dirSun, dirPole, firstAxis, secondAxis);&lt;br /&gt;
        final Attitude att = attitudeLaw.getAttitude(iniOrbit);&lt;br /&gt;
        &lt;br /&gt;
        // Printing attitude&lt;br /&gt;
        final double psi  = att.getRotation().getAngles(RotationOrder.ZYX)[0];&lt;br /&gt;
        final double teta = att.getRotation().getAngles(RotationOrder.ZYX)[1];&lt;br /&gt;
&lt;br /&gt;
        System.out.println(&amp;quot;Psi  / GCRF  = &amp;quot;+FastMath.toDegrees(psi)+&amp;quot; deg&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot;Teta / GCRF = &amp;quot;+FastMath.toDegrees(teta)+&amp;quot; deg&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // Coordinates of the Sun vs GCRF at the same date&lt;br /&gt;
        PVCoordinates pv = sun.getPVCoordinates(date, GCRF);&lt;br /&gt;
        final Vector3D sunPos = pv.getPosition();&lt;br /&gt;
        &lt;br /&gt;
        // Direction of the Sun from the cdg of the satellite&lt;br /&gt;
        final Vector3D satPos = iniOrbit.getPVCoordinates(GCRF).getPosition();&lt;br /&gt;
        final Rotation sunDir = new Rotation(Vector3D.PLUS_I, sunPos.subtract(satPos));&lt;br /&gt;
        &lt;br /&gt;
        final double psiSun  = sunDir.getAngles(RotationOrder.ZYX)[0];&lt;br /&gt;
        final double tetaSun = sunDir.getAngles(RotationOrder.ZYX)[1];&lt;br /&gt;
&lt;br /&gt;
        System.out.println();&lt;br /&gt;
        System.out.println(&amp;quot;Psi  / GCRF  = &amp;quot;+FastMath.toDegrees(psiSun)+&amp;quot; deg&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot;Teta / GCRF = &amp;quot;+FastMath.toDegrees(tetaSun)+&amp;quot; deg&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        System.out.println();&lt;br /&gt;
        System.out.println(&amp;quot;Delta Psi  = &amp;quot;+FastMath.toDegrees(psiSun-psi)+&amp;quot; deg&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot;Delta Teta = &amp;quot;+FastMath.toDegrees(tetaSun-teta)+&amp;quot; deg&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>