polygon-contains-point

Point in polygon - Check if the point inside the polygon

  • Owner: sromku/polygon-contains-point
  • Platform:
  • License:: Other
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

polygon-contains-point

The point-in-polygon (PIP) problem asks whether a given point in the plane lies inside, outside, or on the boundary of a polygon.
Wiki reference: Point in polygon

Latest Release

:inbox_tray: Download - polygon-1.0.2.jar

:bookmark_tabs: Changelog - https://github.com/sromku/polygon-contains-point/releases/latest

Algorith

The number of intersections for a ray passing from the exterior of the polygon to any point; if odd, it shows that the point lies inside the polygon. If it is even, the point lies outside the polygon.

Usage

Build Polygon

This is the simple version of the polygon. You can build both types of polygons: concave and non-convex

Polygon polygon = Polygon.Builder()
        .addVertex(new Point(1, 3))
        .addVertex(new Point(2, 8))
        .addVertex(new Point(5, 4))
        .addVertex(new Point(5, 9))
        .addVertex(new Point(7, 5))
        .addVertex(new Point(6, 1))
        .addVertex(new Point(3, 1))
        .build();

Build Polygon with Holes

First build all the border sides of the polygon. Close the borders and then you can start adding holes into the polygon.
You can add multiple number of holes, just remember to close() after each added hole.

Polygon polygon = Polygon.Builder()
        .addVertex(new Point(1, 2)) // polygon
        .addVertex(new Point(1, 6))
        .addVertex(new Point(8, 7))
        .addVertex(new Point(8, 1))
        .close() 
        .addVertex(new Point(2, 3)) // hole one
        .addVertex(new Point(5, 5))
        .addVertex(new Point(6, 2))
        .close() 
        .addVertex(new Point(6, 6)) // hole two
        .addVertex(new Point(7, 6))
        .addVertex(new Point(7, 5))
        .build();

Check if the point inside

Point point = new Point(4.5f, 7);
boolean contains = polygon.contains(point);

Tests

Two main tests are attached (not in junit format). Both tests cover polygons with holes and without.

License

Apache 2.0. See LICENSE

Follow us

Twitter URL
Twitter Follow

Main metrics

Overview
Name With Ownersromku/polygon-contains-point
Primary LanguageJava
Program languageJava (Language Count: 1)
Platform
License:Other
所有者活动
Created At2013-03-01 21:39:56
Pushed At2019-03-25 17:10:36
Last Commit At2017-09-12 09:29:28
Release Count1
Last Release Name1.0.2 (Posted on )
First Release Name1.0.2 (Posted on )
用户参与
Stargazers Count296
Watchers Count17
Fork Count101
Commits Count19
Has Issues Enabled
Issues Count12
Issue Open Count6
Pull Requests Count2
Pull Requests Open Count2
Pull Requests Close Count4
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private