Draw bounding region by list of points












5












$begingroup$


Suppose you have a list of data points, either in 2D or 3D; is it possible to plot the minimal bounding region containing all the points?



Ignoring holes etc.










share|improve this question











$endgroup$












  • $begingroup$
    my gut instinct is that InterpolationPoint might be the option to consider
    $endgroup$
    – MKF
    yesterday








  • 3




    $begingroup$
    Are you looking for ConvexHullMesh?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    Exactly! is there a way to apply smoothing to it? and perhaps some opacity?
    $endgroup$
    – MKF
    yesterday












  • $begingroup$
    Opacity: sure, it's somewhere in the options. What do you mean by "smoothing" though? Do you have an example in mind?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    It seems convexhullmesh will give a quite polygonal/linear shape. Is there anyway to somehow round the shape?
    $endgroup$
    – MKF
    yesterday
















5












$begingroup$


Suppose you have a list of data points, either in 2D or 3D; is it possible to plot the minimal bounding region containing all the points?



Ignoring holes etc.










share|improve this question











$endgroup$












  • $begingroup$
    my gut instinct is that InterpolationPoint might be the option to consider
    $endgroup$
    – MKF
    yesterday








  • 3




    $begingroup$
    Are you looking for ConvexHullMesh?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    Exactly! is there a way to apply smoothing to it? and perhaps some opacity?
    $endgroup$
    – MKF
    yesterday












  • $begingroup$
    Opacity: sure, it's somewhere in the options. What do you mean by "smoothing" though? Do you have an example in mind?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    It seems convexhullmesh will give a quite polygonal/linear shape. Is there anyway to somehow round the shape?
    $endgroup$
    – MKF
    yesterday














5












5








5





$begingroup$


Suppose you have a list of data points, either in 2D or 3D; is it possible to plot the minimal bounding region containing all the points?



Ignoring holes etc.










share|improve this question











$endgroup$




Suppose you have a list of data points, either in 2D or 3D; is it possible to plot the minimal bounding region containing all the points?



Ignoring holes etc.







plotting regions computational-geometry






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday









MarcoB

37k556113




37k556113










asked yesterday









MKFMKF

2108




2108












  • $begingroup$
    my gut instinct is that InterpolationPoint might be the option to consider
    $endgroup$
    – MKF
    yesterday








  • 3




    $begingroup$
    Are you looking for ConvexHullMesh?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    Exactly! is there a way to apply smoothing to it? and perhaps some opacity?
    $endgroup$
    – MKF
    yesterday












  • $begingroup$
    Opacity: sure, it's somewhere in the options. What do you mean by "smoothing" though? Do you have an example in mind?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    It seems convexhullmesh will give a quite polygonal/linear shape. Is there anyway to somehow round the shape?
    $endgroup$
    – MKF
    yesterday


















  • $begingroup$
    my gut instinct is that InterpolationPoint might be the option to consider
    $endgroup$
    – MKF
    yesterday








  • 3




    $begingroup$
    Are you looking for ConvexHullMesh?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    Exactly! is there a way to apply smoothing to it? and perhaps some opacity?
    $endgroup$
    – MKF
    yesterday












  • $begingroup$
    Opacity: sure, it's somewhere in the options. What do you mean by "smoothing" though? Do you have an example in mind?
    $endgroup$
    – MarcoB
    yesterday










  • $begingroup$
    It seems convexhullmesh will give a quite polygonal/linear shape. Is there anyway to somehow round the shape?
    $endgroup$
    – MKF
    yesterday
















$begingroup$
my gut instinct is that InterpolationPoint might be the option to consider
$endgroup$
– MKF
yesterday






$begingroup$
my gut instinct is that InterpolationPoint might be the option to consider
$endgroup$
– MKF
yesterday






3




3




$begingroup$
Are you looking for ConvexHullMesh?
$endgroup$
– MarcoB
yesterday




$begingroup$
Are you looking for ConvexHullMesh?
$endgroup$
– MarcoB
yesterday












$begingroup$
Exactly! is there a way to apply smoothing to it? and perhaps some opacity?
$endgroup$
– MKF
yesterday






$begingroup$
Exactly! is there a way to apply smoothing to it? and perhaps some opacity?
$endgroup$
– MKF
yesterday














$begingroup$
Opacity: sure, it's somewhere in the options. What do you mean by "smoothing" though? Do you have an example in mind?
$endgroup$
– MarcoB
yesterday




$begingroup$
Opacity: sure, it's somewhere in the options. What do you mean by "smoothing" though? Do you have an example in mind?
$endgroup$
– MarcoB
yesterday












$begingroup$
It seems convexhullmesh will give a quite polygonal/linear shape. Is there anyway to somehow round the shape?
$endgroup$
– MKF
yesterday




$begingroup$
It seems convexhullmesh will give a quite polygonal/linear shape. Is there anyway to somehow round the shape?
$endgroup$
– MKF
yesterday










2 Answers
2






active

oldest

votes


















6












$begingroup$

For the 2D case, you can use the shape of the joint to give rounded corners to your shape. For instance:



pts = RandomReal[{-5, 5}, {20, 2}];
ConvexHullMesh[pts]


hull



Retrieve the mesh expressed as a Polygon object and style to your liking:



Graphics[{
Darker@Blue,
EdgeForm[{Darker@Blue, Thickness[0.09], JoinForm["Round"]}],
Cases[Normal[chm["Graphics"]], _Polygon, All]
}]


styled






share|improve this answer









$endgroup$













  • $begingroup$
    Awesome, thanks again!
    $endgroup$
    – MKF
    yesterday










  • $begingroup$
    @MKF You are welcome!
    $endgroup$
    – MarcoB
    yesterday



















7












$begingroup$

Given a set of random 3D points, you can create a mesh that represents the minimum bounding region using BoundingRegion or ConvexHullMesh as MarcoB suggested. ConvexHullMesh is probably the simplest, though BoundingRegion has some nice options for other sorts of regions like the smallest sphere or cuboid.



BlockRandom[SeedRandom[1234]; pts = RandomReal[{-1, 1}, {50, 3}];]
cvx = ConvexHullMesh[pts]
br = BoundingRegion[pts, "MinConvexPolyhedron"]


This should give you two meshes that look identical to this:



Convex hull mesh of random 3d points.



You can choose whichever function you prefer. It's also possible to show the points themselves along with the mesh:



Show[HighlightMesh[br, Style[2, Opacity[0.5]]], Graphics3D[Point[pts]]]


Convex hull mesh of random 3d points with points shown.






share|improve this answer









$endgroup$













    Your Answer





    StackExchange.ifUsing("editor", function () {
    return StackExchange.using("mathjaxEditing", function () {
    StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
    StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
    });
    });
    }, "mathjax-editing");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "387"
    };
    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: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    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%2fmathematica.stackexchange.com%2fquestions%2f192738%2fdraw-bounding-region-by-list-of-points%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    6












    $begingroup$

    For the 2D case, you can use the shape of the joint to give rounded corners to your shape. For instance:



    pts = RandomReal[{-5, 5}, {20, 2}];
    ConvexHullMesh[pts]


    hull



    Retrieve the mesh expressed as a Polygon object and style to your liking:



    Graphics[{
    Darker@Blue,
    EdgeForm[{Darker@Blue, Thickness[0.09], JoinForm["Round"]}],
    Cases[Normal[chm["Graphics"]], _Polygon, All]
    }]


    styled






    share|improve this answer









    $endgroup$













    • $begingroup$
      Awesome, thanks again!
      $endgroup$
      – MKF
      yesterday










    • $begingroup$
      @MKF You are welcome!
      $endgroup$
      – MarcoB
      yesterday
















    6












    $begingroup$

    For the 2D case, you can use the shape of the joint to give rounded corners to your shape. For instance:



    pts = RandomReal[{-5, 5}, {20, 2}];
    ConvexHullMesh[pts]


    hull



    Retrieve the mesh expressed as a Polygon object and style to your liking:



    Graphics[{
    Darker@Blue,
    EdgeForm[{Darker@Blue, Thickness[0.09], JoinForm["Round"]}],
    Cases[Normal[chm["Graphics"]], _Polygon, All]
    }]


    styled






    share|improve this answer









    $endgroup$













    • $begingroup$
      Awesome, thanks again!
      $endgroup$
      – MKF
      yesterday










    • $begingroup$
      @MKF You are welcome!
      $endgroup$
      – MarcoB
      yesterday














    6












    6








    6





    $begingroup$

    For the 2D case, you can use the shape of the joint to give rounded corners to your shape. For instance:



    pts = RandomReal[{-5, 5}, {20, 2}];
    ConvexHullMesh[pts]


    hull



    Retrieve the mesh expressed as a Polygon object and style to your liking:



    Graphics[{
    Darker@Blue,
    EdgeForm[{Darker@Blue, Thickness[0.09], JoinForm["Round"]}],
    Cases[Normal[chm["Graphics"]], _Polygon, All]
    }]


    styled






    share|improve this answer









    $endgroup$



    For the 2D case, you can use the shape of the joint to give rounded corners to your shape. For instance:



    pts = RandomReal[{-5, 5}, {20, 2}];
    ConvexHullMesh[pts]


    hull



    Retrieve the mesh expressed as a Polygon object and style to your liking:



    Graphics[{
    Darker@Blue,
    EdgeForm[{Darker@Blue, Thickness[0.09], JoinForm["Round"]}],
    Cases[Normal[chm["Graphics"]], _Polygon, All]
    }]


    styled







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered yesterday









    MarcoBMarcoB

    37k556113




    37k556113












    • $begingroup$
      Awesome, thanks again!
      $endgroup$
      – MKF
      yesterday










    • $begingroup$
      @MKF You are welcome!
      $endgroup$
      – MarcoB
      yesterday


















    • $begingroup$
      Awesome, thanks again!
      $endgroup$
      – MKF
      yesterday










    • $begingroup$
      @MKF You are welcome!
      $endgroup$
      – MarcoB
      yesterday
















    $begingroup$
    Awesome, thanks again!
    $endgroup$
    – MKF
    yesterday




    $begingroup$
    Awesome, thanks again!
    $endgroup$
    – MKF
    yesterday












    $begingroup$
    @MKF You are welcome!
    $endgroup$
    – MarcoB
    yesterday




    $begingroup$
    @MKF You are welcome!
    $endgroup$
    – MarcoB
    yesterday











    7












    $begingroup$

    Given a set of random 3D points, you can create a mesh that represents the minimum bounding region using BoundingRegion or ConvexHullMesh as MarcoB suggested. ConvexHullMesh is probably the simplest, though BoundingRegion has some nice options for other sorts of regions like the smallest sphere or cuboid.



    BlockRandom[SeedRandom[1234]; pts = RandomReal[{-1, 1}, {50, 3}];]
    cvx = ConvexHullMesh[pts]
    br = BoundingRegion[pts, "MinConvexPolyhedron"]


    This should give you two meshes that look identical to this:



    Convex hull mesh of random 3d points.



    You can choose whichever function you prefer. It's also possible to show the points themselves along with the mesh:



    Show[HighlightMesh[br, Style[2, Opacity[0.5]]], Graphics3D[Point[pts]]]


    Convex hull mesh of random 3d points with points shown.






    share|improve this answer









    $endgroup$


















      7












      $begingroup$

      Given a set of random 3D points, you can create a mesh that represents the minimum bounding region using BoundingRegion or ConvexHullMesh as MarcoB suggested. ConvexHullMesh is probably the simplest, though BoundingRegion has some nice options for other sorts of regions like the smallest sphere or cuboid.



      BlockRandom[SeedRandom[1234]; pts = RandomReal[{-1, 1}, {50, 3}];]
      cvx = ConvexHullMesh[pts]
      br = BoundingRegion[pts, "MinConvexPolyhedron"]


      This should give you two meshes that look identical to this:



      Convex hull mesh of random 3d points.



      You can choose whichever function you prefer. It's also possible to show the points themselves along with the mesh:



      Show[HighlightMesh[br, Style[2, Opacity[0.5]]], Graphics3D[Point[pts]]]


      Convex hull mesh of random 3d points with points shown.






      share|improve this answer









      $endgroup$
















        7












        7








        7





        $begingroup$

        Given a set of random 3D points, you can create a mesh that represents the minimum bounding region using BoundingRegion or ConvexHullMesh as MarcoB suggested. ConvexHullMesh is probably the simplest, though BoundingRegion has some nice options for other sorts of regions like the smallest sphere or cuboid.



        BlockRandom[SeedRandom[1234]; pts = RandomReal[{-1, 1}, {50, 3}];]
        cvx = ConvexHullMesh[pts]
        br = BoundingRegion[pts, "MinConvexPolyhedron"]


        This should give you two meshes that look identical to this:



        Convex hull mesh of random 3d points.



        You can choose whichever function you prefer. It's also possible to show the points themselves along with the mesh:



        Show[HighlightMesh[br, Style[2, Opacity[0.5]]], Graphics3D[Point[pts]]]


        Convex hull mesh of random 3d points with points shown.






        share|improve this answer









        $endgroup$



        Given a set of random 3D points, you can create a mesh that represents the minimum bounding region using BoundingRegion or ConvexHullMesh as MarcoB suggested. ConvexHullMesh is probably the simplest, though BoundingRegion has some nice options for other sorts of regions like the smallest sphere or cuboid.



        BlockRandom[SeedRandom[1234]; pts = RandomReal[{-1, 1}, {50, 3}];]
        cvx = ConvexHullMesh[pts]
        br = BoundingRegion[pts, "MinConvexPolyhedron"]


        This should give you two meshes that look identical to this:



        Convex hull mesh of random 3d points.



        You can choose whichever function you prefer. It's also possible to show the points themselves along with the mesh:



        Show[HighlightMesh[br, Style[2, Opacity[0.5]]], Graphics3D[Point[pts]]]


        Convex hull mesh of random 3d points with points shown.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered yesterday









        MassDefectMassDefect

        1,843311




        1,843311






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Mathematica Stack Exchange!


            • 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.


            Use MathJax to format equations. MathJax reference.


            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%2fmathematica.stackexchange.com%2fquestions%2f192738%2fdraw-bounding-region-by-list-of-points%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

            How to label and detect the document text images

            Vallis Paradisi

            Tabula Rosettana