Provably Correct Floating-Point Implementation of a Point-In-Polygon AlgorithmThe problem of determining whether or not a point lies inside a given polygon occurs in many applications. In air traffic management concepts, a correct solution to the point-in-polygon problem is critical to geofencing systems for Unmanned Aerial Vehicles and in weather avoidance applications. Many mathematical methods can be used to solve the point-in-polygon problem. Unfortunately, a straightforward floating- point implementation of these methods can lead to incorrect results due to round-off errors. In particular, these errors may cause the control flow of the program to diverge with respect to the ideal real-number algorithm. This divergence potentially results in an incorrect point-in- polygon determination even when the point is far from the edges of the polygon. This paper presents a provably correct implementation of a point-in-polygon method that is based on the computation of the winding number. This implementation is mechanically generated from a source- to-source transformation of the ideal real-number specification of the algorithm. The correctness of this implementation is formally verified within the Frama-C analyzer, where the proof obligations are discharged using the Prototype Verification System (PVS).
Document ID
20200002745
Acquisition Source
Langley Research Center
Document Type
Conference Paper
Authors
Moscato, Mariano M. (National Inst. of Aerospace Hampton, VA, United States)
Titolo, Laura (National Inst. of Aerospace Hampton, VA, United States)
Feliu, Marco A. (National Inst. of Aerospace Hampton, VA, United States)
Munoz, Cesar A. (NASA Langley Research Center Hampton, VA, United States)