Dear Orekit community,

@luc and @JarrodSears

I wanted to ask a similar question, but since someone has just asked it, I would not open a new Topic. I’d like to determine the time when the ISS enters the field of view of a specified point on the ground.

I don’t fully understand the physics behind it yet, but I’m working on it.

Based on the answer, I created a code, but I get an error. @luc could you please take a look at it, I tried to do what you wrote. Unfortunately, I still don’t fully understand it, so I’m not sure if I succeeded

Here is my code

```
// ISS
TLE tle = new TLE(
"1 25544U 98067A 23208.30934329 .00015800 00000+0 28347-3 0 9998",
"2 25544 51.6413 129.7314 0000554 64.5675 79.5453 15.50079229408012",
TimeScalesFactory.getUTC()
);
Frame earthFrame = FramesFactory.getITRF(IERSConventions.IERS_2010, true);
BodyShape earth = new OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS, Constants.WGS84_EARTH_FLATTENING, earthFrame);
// predict
final TLEPropagator propagator = TLEPropagator.selectExtrapolator(tle);
AbsoluteDate target = new AbsoluteDate(new Date(), TimeScalesFactory.getUTC());
SpacecraftState state = propagator.propagate(target);
Vector3D satPoint = state.getPVCoordinates().getPosition();
GeodeticPoint geoPoint = earth.transform(satPoint, state.getFrame(), state.getDate());
System.out.println(geoPoint);
// Transform inertToBody = state.getFrame().getTransformTo(earthFrame, state.getDate());
// Transform fovToBody = new Transform(state.getDate(),
// state.toTransform().getInverse(),
// inertToBody);
//create gps point on earth frame
final double longitude = FastMath.toRadians(48.21791046918412);
final double latitude = FastMath.toRadians(16.397910223220432);
final double altitude = 0.;
GeodeticPoint gpsPoint = new GeodeticPoint(latitude, longitude, altitude);
Vector3D targetEarth = earth.transform(gpsPoint); // this can be computed once as it does not depend on date
Vector3D losEarth = targetEarth.subtract(state.getPVCoordinates(earthFrame).getPosition());
Transform fovToBody = new Transform(target, new Rotation(Vector3D.PLUS_K, losEarth));
CircularFieldOfView cfov =
new CircularFieldOfView(Vector3D.PLUS_K, FastMath.toRadians(50.), 0.);
List<List<GeodeticPoint>> footprint =
cfov.getFootprint(fovToBody, (OneAxisEllipsoid) earth, 0.1);
List<GeodeticPoint> list = footprint.get(0);
for (GeodeticPoint point : list) {
System.out.println("[" + FastMath.toDegrees(point.getLongitude()) + "," +
FastMath.toDegrees(point.getLatitude()) + "],");
}
```

and exception:

**Exception in thread “main” org.orekit.errors.OrekitException: point is inside ellipsoid**

Could you tell me which point is inside the ellipsoid and why?

I have one more question.

I tried to calculate the field of view based on the following article: Field of View Sat Event Detector Example

I started with Evan’s code and used TLE propagator to define the orbit. The values I got weren’t appropriate and I found this post.

I think that both solutions could be used to determine getting into the field of view. (Am I getting this right?)

How do the two implementations differ?

Thank you for your help in advance. Looking forward to your reply.

Rol