# getting the coordinates of the boundary of a 3d region

I recently meet a problem of finding the points on the boundary of a 3D object, e.g., the points on a cylinder below:

a1 = Cylinder[{{0, 0, 0}, {1, 0, 0}}, 1];Graphics3D[a1]


I'm going to work on some more complex objects, which is to be obtained by ImplicitRegion, but I guess the process should be similar.

My question is, I'd like to get a list of the boundaries points similar to what we will get in a discretization method. E.g., if I use the spherical coordinates, I may discretize the two angles and calculate the corresponding radius, or if I use the Cartesian coordinates, I may discretize z and x then seeking for the corresponding y.

So how do I get such a list of data? I prefer to get the 3D list if possible. And how do I set the desired accuracy, like the increment I set in the discretization method? My wild guess is to generate a mesh on it, e.g. using the DiscretizeRegion, but I'm not sure if it is going to work or how. Thanks a lot.

• When you say "the points"... well, of course there is an infinite number of points on the boundary of your cylinder. What do you really want? And why? Commented Mar 6, 2017 at 17:15
• @DavidG.Stork, hi, what I mean is a list of points, that are similar to what I would obtain via a discretization method, as I described in the problem. and I would like to be able to control how the points are distributed, like I discrete the x and z values with fixed increment, and find the corresponding y, and I preferably I'd like to get a 3D list of dimension n_zn_x*3 instead of a 2D list of (n_zn_x)*3. Thanks. Commented Mar 6, 2017 at 18:12

You can first discretize the boundary of the region with BoundaryDiscretizeRegion, and then get the points with MeshCoordinates, like so:
ClearAll[cyl, its, trans];