[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orekit Users] implementation of a CircularFieldOfViewDetector



Hi Serge,

serge.rainjonneau@irt-saintexupery.com a écrit :

Hi everyone,
I was about to implement a CircularFieldOfViewDetector in my development and
I'm a bit disappointed on the best choice to do.
I have a polygon with small number of vertices, let's say 4 or 5 vertices.
I would like to get events when the above-mentioned polygon enters or exits a
conus-like detector field of view (Nadir pointing).

My question is : Is it better to implement a CirdularFiledOfViewDetector or a
GeographicZoneDetector ?

Unfortunately, currently neither predefined detector would provide a complete
computation for you. You will have to use several Orekit classes together.

I would suggest that you set up you own detector (probably starting from
CirdularFiledOfViewDetector) but instead of computing the g detection function as:

  halfAperture - angle(targetPosSat, center)

you should compute it as:

  halfAperture - min (angle(targetPosSat[i], center))

where targetPosSat[i] are a set of several points walking through the boundary
of your polygon (computed just the same way as in CirdularFiledOfViewDetector).

Note that this would work *only* if the polygons is small enough that it cannot fit entirely in the cone. The reason is that if you have a large zone of interest and a small FoV, you can have the FoV fully inside the region (and hence surely seeing part of it) despite *all* boundary is outside of the FoV. If you want to handle this case too, then rather than sampling only the boundary of your region, you should also sample its interior. For this, you can use the new EllipsoidTesselator
class that is available in the development version of Orekit. Just use a grid
size that is smaller than your FoV and you are done.

With this g function, the "increasing" event would be when the first of the
smapling points enters the FoV, even if some other parts of the polygon are
still outside. The decreasing event would be when the last part of the polygon
exists the FoV. If what you want is know when the polygons is entirely within
the FoV, then you should use a max instead of a min and in this case no events
would be triggered if only some parts comes inside for a given pass above
the region.

We will most probably add this to Orekit soon as we have just finished the
EllipsoidTesselator before the summer break.

Hope this helps,
Luc


Thank's in advance for your help.

Serge
[% user.friendly_date %]