Uniform Sampling of Points on a 2D-Manifold in R3

32 views
Skip to first unread message

phili...@gmail.com

unread,
Feb 5, 2019, 2:00:23 PM2/5/19
to Manopt
Hello Good Kind Denizens of the Web,

I am a researcher in computational electromagnetics, and not a mathematician.

I am facing a challenge in computing 'uniformly' distributed points on a 3D surface, which is itself generated by creating a 'generatrix', and revolving this around the +z axis.

Some initial research leads me to read about the idea of uniformly sampling points on a sphere (i.e. https://stackoverflow.com/questions/9600801/evenly-distributing-n-points-on-a-sphere)..

This was also an excellent thread that gave me some other ideas on how I might recast this problem.
https://mathoverflow.net/questions/9991/how-can-i-sample-uniformly-from-a-surface

Evidently, the problem may cast as "Stratified Sampling of 2-Manifolds" [Arvo, Siggraph 2001), or most specifically as a minimization problem, of "Sampling From A Manifold (https://arxiv.org/abs/1206.6913v1)

Then I stumbled upon Manopt, and it occurs to me that this might have the scaffolding to solve this problem, as I read that Manopt is a minimizer.


Essentially I have a point-cloud form defining my manifold and would like (read: "desperately need") a way of sampling points uniformly distributed on that surface.

Any hints or pointers are most appreciated.
Regards from Canada,
Josh

So: "How can I find a non-unique set of such points using Manopt?"

Nicolas Boumal

unread,
Feb 5, 2019, 2:56:42 PM2/5/19
to Manopt
Hello Josh,

Can you tell us more about how your manifold is defined? You mentioned a point cloud. What happens in between the points? Do you have a mesh connecting the points? Are the points exactly on the manifold, or is there some noise? Can we assume the manifold is compact? Does it have a boundary?

I'm not sure if manopt will be the right tool for you, but happy to discuss this.

Best,
Nicolas
Message has been deleted
Message has been deleted

phili...@gmail.com

unread,
Feb 5, 2019, 3:34:44 PM2/5/19
to Manopt
Hello Nicolas,
Thank you.
I will try to attach an image.
Basic idea is I have a curve, in the XZ plane. I can smoothly interpolate between the points. I can say more about this if required.
I then revolve this curve in a finite number of azimuths around the z-axis.
Essentially I am left with a faceted Body-of-Revolution at a finite number of azimuths.
I could further subdivide (endlessly) the number of azimuths to make the body-of-revolution smooth in the azimuthal direction.

Evidently I cannot post an image to the Group, so I upload to paste-board.
https://pasteboard.co/HZNO1KR.png

I hope the image comes thru. Just to give an idea. The red/blue/green fletched arrows are a local-coordinate system on the BOR (body-of-revolution).
Does it make sense?

My goal then is to find a set of positions that would lie on the smoothly interpolable surface-of-revolution and select points such that their 'nearest neighbour' are equally spaced if area was measured on that 2D manifold constructed by the locus of points, as one rotates the generatrix.


Thank you for engaging!
Regards,
Josh

Nicolas Boumal

unread,
Feb 13, 2019, 9:49:08 PM2/13/19
to Manopt
Hello Josh,

Thanks for your clear description of the problem, and sorry for the delay in my response.

Two follow-up questions about the surface being generated:
  1. Is the volume inside the surface always convex? (The attached figure shows a convex body)
  2. Is the surface smooth at the top and bottom points? (It is not on the attached figure, which means the surface is not a smooth embedded manifold of R^3, though admittedly it is almost smooth except for those two "poles".)
I think that, at least in principle, some kind of approach based on optimization on manifolds could apply here. I'm just not sure yet if that's your best bet, because I'm not clear on the objective function.

Is the goal to have the points evenly spread in terms of area? Something akin to: Voronoi cells should have about equal area? Or is the goal to maximize the minimum distance between any two points, where distance is a type of geodesic distance on the manifold?

Also, how important is it to have an optimal distribution of points? Something naive could be to distribute the points unevenly on the curve, where the spread is dictated by how much surface that particular bit of the curve will generate (denser points if it will generate more surface), then repeat this sampling as the curve revolves around the axis.. I'm a bit fuzzy on the details, but something of that nature could perhaps provide something sufficient (depending on the application). If it's not enough, one could also use that as initialization for an optimization-based approach.

Another question that should guide the algorithmic design is: how fast does this need to be? How many points are we placing, and do we need to do this for a very large number of surfaces, or this is just a kind of precomputation to be done once and stored?

Best,
Nicolas
Reply all
Reply to author
Forward
0 new messages