Что делает wrap ()? - PullRequest
       6

Что делает wrap ()?

0 голосов
/ 22 сентября 2019

Что делает метод wrap (lng3 - lng1, -PI, PI)?

Это из кода класса PolyUtil (com.google.maps.android.PolyUtil): https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/PolyUtil.java

public static boolean containsLocation(double latitude, double longitude, List<LatLng> polygon, boolean geodesic) {
    final int size = polygon.size();
    if (size == 0) {
        return false;
    }
    double lat3 = toRadians(latitude);
    double lng3 = toRadians(longitude);
    LatLng prev = polygon.get(size - 1);
    double lat1 = toRadians(prev.latitude);
    double lng1 = toRadians(prev.longitude);
    int nIntersect = 0;
    for (LatLng point2 : polygon) {
        double dLng3 = wrap(lng3 - lng1, -PI, PI);
        // Special case: point equal to vertex is inside.
        if (lat3 == lat1 && dLng3 == 0) {
            return true;
        }
        double lat2 = toRadians(point2.latitude);
        double lng2 = toRadians(point2.longitude);
        // Offset longitudes by -lng1.
        if (intersects(lat1, lat2, wrap(lng2 - lng1, -PI, PI), lat3, dLng3, geodesic)) {
            ++nIntersect;
        }
        lat1 = lat2;
        lng1 = lng2;
    }
    return (nIntersect & 1) != 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...