22//
33// SPDX-License-Identifier: MPL-2.0
44
5- use lox_bodies:: { RotationalElements , TryRotationalElements , UndefinedOriginPropertyError } ;
5+ use lox_bodies:: { Origin , RotationalElements , TryRotationalElements , UndefinedOriginPropertyError } ;
66
77use crate :: traits:: { BodyFixed , QuasiInertial , ReferenceFrame } ;
88
@@ -21,6 +21,10 @@ impl ReferenceFrame for Icrf {
2121 fn is_rotating ( & self ) -> bool {
2222 false
2323 }
24+
25+ fn frame_id ( & self , _: crate :: traits:: private:: Internal ) -> Option < i32 > {
26+ Some ( 0 )
27+ }
2428}
2529
2630impl QuasiInertial for Icrf { }
@@ -40,6 +44,10 @@ impl ReferenceFrame for Cirf {
4044 fn is_rotating ( & self ) -> bool {
4145 false
4246 }
47+
48+ fn frame_id ( & self , _: crate :: traits:: private:: Internal ) -> Option < i32 > {
49+ Some ( 1 )
50+ }
4351}
4452
4553#[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
@@ -57,6 +65,10 @@ impl ReferenceFrame for Tirf {
5765 fn is_rotating ( & self ) -> bool {
5866 true
5967 }
68+
69+ fn frame_id ( & self , _: crate :: traits:: private:: Internal ) -> Option < i32 > {
70+ Some ( 2 )
71+ }
6072}
6173
6274#[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
@@ -74,6 +86,10 @@ impl ReferenceFrame for Itrf {
7486 fn is_rotating ( & self ) -> bool {
7587 true
7688 }
89+
90+ fn frame_id ( & self , _: crate :: traits:: private:: Internal ) -> Option < i32 > {
91+ Some ( 3 )
92+ }
7793}
7894
7995impl BodyFixed for Itrf { }
@@ -119,7 +135,7 @@ impl<T: TryRotationalElements> BodyFixed for Iau<T> {}
119135
120136impl < T > ReferenceFrame for Iau < T >
121137where
122- T : TryRotationalElements ,
138+ T : TryRotationalElements + Origin ,
123139{
124140 fn name ( & self ) -> String {
125141 let body = self . 0 . name ( ) ;
@@ -137,4 +153,8 @@ where
137153 fn is_rotating ( & self ) -> bool {
138154 true
139155 }
156+
157+ fn frame_id ( & self , _: crate :: traits:: private:: Internal ) -> Option < i32 > {
158+ Some ( 1000 + self . 0 . id ( ) . 0 )
159+ }
140160}
0 commit comments