Contains method doesn't seem to work with a point inside my polygon












1















I am trying to add a functionnality which would let me see if a point is inside a polygon.



Here's the code snippet to see if the point is inside my polygon



int x = 265;
int y = 300;
List<Point> points = new ArrayList<Point>();

points.add(new Point(233,155));
points.add(new Point(347,269));
points.add(new Point(136,251));
points.add(new Point(250,366));

Polygon polygon = new Polygon();//java.awt.Polygon

for(Point point : points) {
polygon.addPoint(point.x, point.y);
}

return polygon.contains(x,y);


The code seems to work if my point is closer to the upper-left side of the polygon, however when the point is on the bottom-right side, the method contains will return false.



Graph of my polygon and the point in question : https://www.desmos.com/calculator/tnglrdpivn



Any idea why this happens ?










share|improve this question

























  • In order for us to help, what are the points and what are x & y that reproduce the issue you're having? Also make sure you read thru the definition of insideness for this implementation.

    – Krease
    Nov 15 '18 at 23:25













  • For better help sooner, post a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 15 '18 at 23:27






  • 1





    @Krease as you have requested I've added more info to make my question clearer, thanks for your input.

    – J. Lev
    Nov 15 '18 at 23:40











  • Much clearer now - see my answer.

    – Krease
    Nov 16 '18 at 0:05
















1















I am trying to add a functionnality which would let me see if a point is inside a polygon.



Here's the code snippet to see if the point is inside my polygon



int x = 265;
int y = 300;
List<Point> points = new ArrayList<Point>();

points.add(new Point(233,155));
points.add(new Point(347,269));
points.add(new Point(136,251));
points.add(new Point(250,366));

Polygon polygon = new Polygon();//java.awt.Polygon

for(Point point : points) {
polygon.addPoint(point.x, point.y);
}

return polygon.contains(x,y);


The code seems to work if my point is closer to the upper-left side of the polygon, however when the point is on the bottom-right side, the method contains will return false.



Graph of my polygon and the point in question : https://www.desmos.com/calculator/tnglrdpivn



Any idea why this happens ?










share|improve this question

























  • In order for us to help, what are the points and what are x & y that reproduce the issue you're having? Also make sure you read thru the definition of insideness for this implementation.

    – Krease
    Nov 15 '18 at 23:25













  • For better help sooner, post a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 15 '18 at 23:27






  • 1





    @Krease as you have requested I've added more info to make my question clearer, thanks for your input.

    – J. Lev
    Nov 15 '18 at 23:40











  • Much clearer now - see my answer.

    – Krease
    Nov 16 '18 at 0:05














1












1








1








I am trying to add a functionnality which would let me see if a point is inside a polygon.



Here's the code snippet to see if the point is inside my polygon



int x = 265;
int y = 300;
List<Point> points = new ArrayList<Point>();

points.add(new Point(233,155));
points.add(new Point(347,269));
points.add(new Point(136,251));
points.add(new Point(250,366));

Polygon polygon = new Polygon();//java.awt.Polygon

for(Point point : points) {
polygon.addPoint(point.x, point.y);
}

return polygon.contains(x,y);


The code seems to work if my point is closer to the upper-left side of the polygon, however when the point is on the bottom-right side, the method contains will return false.



Graph of my polygon and the point in question : https://www.desmos.com/calculator/tnglrdpivn



Any idea why this happens ?










share|improve this question
















I am trying to add a functionnality which would let me see if a point is inside a polygon.



Here's the code snippet to see if the point is inside my polygon



int x = 265;
int y = 300;
List<Point> points = new ArrayList<Point>();

points.add(new Point(233,155));
points.add(new Point(347,269));
points.add(new Point(136,251));
points.add(new Point(250,366));

Polygon polygon = new Polygon();//java.awt.Polygon

for(Point point : points) {
polygon.addPoint(point.x, point.y);
}

return polygon.contains(x,y);


The code seems to work if my point is closer to the upper-left side of the polygon, however when the point is on the bottom-right side, the method contains will return false.



Graph of my polygon and the point in question : https://www.desmos.com/calculator/tnglrdpivn



Any idea why this happens ?







java 2d awt polygon






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 0:02







J. Lev

















asked Nov 15 '18 at 23:17









J. LevJ. Lev

89112




89112













  • In order for us to help, what are the points and what are x & y that reproduce the issue you're having? Also make sure you read thru the definition of insideness for this implementation.

    – Krease
    Nov 15 '18 at 23:25













  • For better help sooner, post a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 15 '18 at 23:27






  • 1





    @Krease as you have requested I've added more info to make my question clearer, thanks for your input.

    – J. Lev
    Nov 15 '18 at 23:40











  • Much clearer now - see my answer.

    – Krease
    Nov 16 '18 at 0:05



















  • In order for us to help, what are the points and what are x & y that reproduce the issue you're having? Also make sure you read thru the definition of insideness for this implementation.

    – Krease
    Nov 15 '18 at 23:25













  • For better help sooner, post a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

    – Andrew Thompson
    Nov 15 '18 at 23:27






  • 1





    @Krease as you have requested I've added more info to make my question clearer, thanks for your input.

    – J. Lev
    Nov 15 '18 at 23:40











  • Much clearer now - see my answer.

    – Krease
    Nov 16 '18 at 0:05

















In order for us to help, what are the points and what are x & y that reproduce the issue you're having? Also make sure you read thru the definition of insideness for this implementation.

– Krease
Nov 15 '18 at 23:25







In order for us to help, what are the points and what are x & y that reproduce the issue you're having? Also make sure you read thru the definition of insideness for this implementation.

– Krease
Nov 15 '18 at 23:25















For better help sooner, post a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

– Andrew Thompson
Nov 15 '18 at 23:27





For better help sooner, post a Minimal, Complete, and Verifiable example or Short, Self Contained, Correct Example.

– Andrew Thompson
Nov 15 '18 at 23:27




1




1





@Krease as you have requested I've added more info to make my question clearer, thanks for your input.

– J. Lev
Nov 15 '18 at 23:40





@Krease as you have requested I've added more info to make my question clearer, thanks for your input.

– J. Lev
Nov 15 '18 at 23:40













Much clearer now - see my answer.

– Krease
Nov 16 '18 at 0:05





Much clearer now - see my answer.

– Krease
Nov 16 '18 at 0:05












1 Answer
1






active

oldest

votes


















2














The key here is in the ordering of your points. Though plotted all at once on a graph, they look like they form a nice looking polygon, if you play connect-the-dots with them in the order you add them to the polygon, they form a very weird shape, and the point is really not contained in the polygon.



If you reverse the order of your last two points, the connect-the-dots polygon is properly formed, and then the point is contained in the polygon.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53329216%2fcontains-method-doesnt-seem-to-work-with-a-point-inside-my-polygon%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    The key here is in the ordering of your points. Though plotted all at once on a graph, they look like they form a nice looking polygon, if you play connect-the-dots with them in the order you add them to the polygon, they form a very weird shape, and the point is really not contained in the polygon.



    If you reverse the order of your last two points, the connect-the-dots polygon is properly formed, and then the point is contained in the polygon.






    share|improve this answer




























      2














      The key here is in the ordering of your points. Though plotted all at once on a graph, they look like they form a nice looking polygon, if you play connect-the-dots with them in the order you add them to the polygon, they form a very weird shape, and the point is really not contained in the polygon.



      If you reverse the order of your last two points, the connect-the-dots polygon is properly formed, and then the point is contained in the polygon.






      share|improve this answer


























        2












        2








        2







        The key here is in the ordering of your points. Though plotted all at once on a graph, they look like they form a nice looking polygon, if you play connect-the-dots with them in the order you add them to the polygon, they form a very weird shape, and the point is really not contained in the polygon.



        If you reverse the order of your last two points, the connect-the-dots polygon is properly formed, and then the point is contained in the polygon.






        share|improve this answer













        The key here is in the ordering of your points. Though plotted all at once on a graph, they look like they form a nice looking polygon, if you play connect-the-dots with them in the order you add them to the polygon, they form a very weird shape, and the point is really not contained in the polygon.



        If you reverse the order of your last two points, the connect-the-dots polygon is properly formed, and then the point is contained in the polygon.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 16 '18 at 0:04









        KreaseKrease

        11.7k74162




        11.7k74162
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53329216%2fcontains-method-doesnt-seem-to-work-with-a-point-inside-my-polygon%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Xamarin.iOS Cant Deploy on Iphone

            Glorious Revolution

            Dulmage-Mendelsohn matrix decomposition in Python