I run computational fluid dynamic simulation and I want to refine my mesh in the areas for which a quantity is superior to a threshold. I manage to extract the point locations so I obtain a list of points describing the areas that correspond to my criteria for refining.
To refine my mesh, I need to provide to the software the external boundaries of the surface (or curve if we are in 2D) that is described by the point cloud.
More particularly, I need to remove all the points that are in the center of the area to get the coordinates of those which are on the boundary. Then I would like to surround the points with a curve.
I found similar post on the forum but the question was to interpolate the point cloud, so not exactly what I want: Fit Curve-Spline to 3D Point Cloud
May you help me to do that ?
Here is a 2D example of point cloud for which I would like to only keep the boundary points and plot the surrounding curve:
0.20215,0.29703,0
0.22857,0.29703,0
0.25526,0.29703,0
0.28221,0.29703,0
0.30943,0.29703,0
0.33692,0.29703,0
0.36469,0.29703,0
0.39273,0.29703,0
0.42106,0.29703,0
0.44966,0.29703,0
0.47856,0.29703,0
0.50774,0.29703,0
0.53722,0.29703,0
0.56699,0.29703,0
0.59706,0.29703,0
0.62742,0.29703,0
0.6581,0.29703,0
0.68907,0.29703,0
0.72036,0.29703,0
0.75196,0.29703,0
0.78388,0.29703,0
0.81612,0.29703,0
0.84868,0.29703,0
0.88156,0.29703,0
0.91478,0.29703,0
0.94832,0.29703,0
0.9822,0.29703,0
1.0164,0.29703,0
1.051,0.29703,0
1.0859,0.29703,0
1.1211,0.29703,0
1.1568,0.29703,0
1.1927,0.29703,0
1.229,0.29703,0
1.2657,0.29703,0
1.3028,0.29703,0
1.3402,0.29703,0
1.378,0.29703,0
1.4162,0.29703,0
1.4548,0.29703,0
1.4937,0.29703,0
1.533,0.29703,0
1.5728,0.29703,0
1.6129,0.29703,0
1.6534,0.29703,0
1.6944,0.29703,0
1.7357,0.29703,0
1.7774,0.29703,0
1.8196,0.29703,0
1.8622,0.29703,0
1.9052,0.29703,0
1.9487,0.29703,0
1.9926,0.29703,0
2.0369,0.29703,0
2.0817,0.29703,0
2.1269,0.29703,0
2.1725,0.29703,0
2.2187,0.29703,0
2.2652,0.29703,0
2.3123,0.29703,0
2.3598,0.29703,0
2.4078,0.29703,0
2.4563,0.29703,0
2.5053,0.29703,0
2.5547,0.29703,0
2.6046,0.29703,0
2.6551,0.29703,0
2.706,0.29703,0
2.7575,0.29703,0
2.8095,0.29703,0
2.862,0.29703,0
2.915,0.29703,0
2.9685,0.29703,0
3.0226,0.29703,0
3.0772,0.29703,0
3.1324,0.29703,0
3.1881,0.29703,0
3.2444,0.29703,0
3.3013,0.29703,0
3.3587,0.29703,0
3.4166,0.29703,0
3.4752,0.29703,0
3.5344,0.29703,0
3.5941,0.29703,0
3.6544,0.29703,0
3.7154,0.29703,0
3.7769,0.29703,0
3.8391,0.29703,0
3.9019,0.29703,0
3.9653,0.29703,0
4.0294,0.29703,0
4.094,0.29703,0
4.1594,0.29703,0
4.2254,0.29703,0
4.292,0.29703,0
4.3593,0.29703,0
4.4273,0.29703,0
4.496,0.29703,0
4.5654,0.29703,0
4.6354,0.29703,0
4.7062,0.29703,0
4.7776,0.29703,0
4.8498,0.29703,0
4.9227,0.29703,0
0.28221,0.28425,0
0.30943,0.28425,0
0.33692,0.28425,0
0.36469,0.28425,0
0.39273,0.28425,0
0.42106,0.28425,0
0.44966,0.28425,0
0.47856,0.28425,0
0.50774,0.28425,0
0.53722,0.28425,0
0.56699,0.28425,0
0.59706,0.28425,0
0.62742,0.28425,0
0.6581,0.28425,0
0.68907,0.28425,0
0.72036,0.28425,0
0.75196,0.28425,0
0.78388,0.28425,0
0.81612,0.28425,0
0.84868,0.28425,0
0.88156,0.28425,0
0.91478,0.28425,0
0.94832,0.28425,0
0.9822,0.28425,0
1.0164,0.28425,0
1.051,0.28425,0
1.0859,0.28425,0
1.1211,0.28425,0
1.1568,0.28425,0
1.1927,0.28425,0
1.229,0.28425,0
1.2657,0.28425,0
1.3028,0.28425,0
1.3402,0.28425,0
1.378,0.28425,0
1.4162,0.28425,0
1.4548,0.28425,0
1.4937,0.28425,0
1.533,0.28425,0
1.5728,0.28425,0
1.6129,0.28425,0
1.6534,0.28425,0
1.6944,0.28425,0
1.7357,0.28425,0
1.7774,0.28425,0
1.8196,0.28425,0
1.8622,0.28425,0
1.9052,0.28425,0
1.9487,0.28425,0
1.9926,0.28425,0
2.0369,0.28425,0
2.0817,0.28425,0
2.1269,0.28425,0
2.1725,0.28425,0
2.2187,0.28425,0
2.2652,0.28425,0
2.3123,0.28425,0
2.3598,0.28425,0
2.4078,0.28425,0
2.4563,0.28425,0
2.5053,0.28425,0
2.5547,0.28425,0
2.6046,0.28425,0
2.6551,0.28425,0
2.706,0.28425,0
2.7575,0.28425,0
2.8095,0.28425,0
2.862,0.28425,0
2.915,0.28425,0
2.9685,0.28425,0
3.0226,0.28425,0
3.0772,0.28425,0
3.1324,0.28425,0
3.1881,0.28425,0
3.2444,0.28425,0
3.3013,0.28425,0
3.3587,0.28425,0
3.4166,0.28425,0
3.4752,0.28425,0
3.5344,0.28425,0
3.5941,0.28425,0
3.6544,0.28425,0
3.7154,0.28425,0
3.7769,0.28425,0
3.8391,0.28425,0
3.9019,0.28425,0
3.9653,0.28425,0
4.0294,0.28425,0
4.094,0.28425,0
4.1594,0.28425,0
4.2254,0.28425,0
4.292,0.28425,0
4.3593,0.28425,0
4.4273,0.28425,0
4.496,0.28425,0
4.5654,0.28425,0
0.39273,0.27117,0
0.42106,0.27117,0
0.44966,0.27117,0
0.47856,0.27117,0
0.50774,0.27117,0
0.53722,0.27117,0
0.56699,0.27117,0
0.59706,0.27117,0
0.62742,0.27117,0
0.6581,0.27117,0
0.68907,0.27117,0
0.72036,0.27117,0
0.75196,0.27117,0
0.78388,0.27117,0
0.81612,0.27117,0
0.84868,0.27117,0
0.88156,0.27117,0
0.91478,0.27117,0
0.94832,0.27117,0
0.9822,0.27117,0
1.0164,0.27117,0
1.051,0.27117,0
1.0859,0.27117,0
1.1211,0.27117,0
1.1568,0.27117,0
1.1927,0.27117,0
1.229,0.27117,0
1.2657,0.27117,0
1.3028,0.27117,0
1.3402,0.27117,0
1.378,0.27117,0
1.4162,0.27117,0
1.4548,0.27117,0
1.4937,0.27117,0
1.533,0.27117,0
1.5728,0.27117,0
1.6129,0.27117,0
1.6534,0.27117,0
1.6944,0.27117,0
1.7357,0.27117,0
1.7774,0.27117,0
1.8196,0.27117,0
1.8622,0.27117,0
1.9052,0.27117,0
1.9487,0.27117,0
1.9926,0.27117,0
2.0369,0.27117,0
2.0817,0.27117,0
2.1269,0.27117,0
2.1725,0.27117,0
2.2187,0.27117,0
2.2652,0.27117,0
2.3123,0.27117,0
2.3598,0.27117,0
2.4078,0.27117,0
2.4563,0.27117,0
2.5053,0.27117,0
2.5547,0.27117,0
2.6046,0.27117,0
2.6551,0.27117,0
2.706,0.27117,0
2.7575,0.27117,0
2.8095,0.27117,0
2.862,0.27117,0
2.915,0.27117,0
2.9685,0.27117,0
3.0226,0.27117,0
3.0772,0.27117,0
3.1324,0.27117,0
3.1881,0.27117,0
3.2444,0.27117,0
3.3013,0.27117,0
3.3587,0.27117,0
3.4166,0.27117,0
3.4752,0.27117,0
3.5344,0.27117,0
3.5941,0.27117,0
3.6544,0.27117,0
3.7154,0.27117,0
3.7769,0.27117,0
3.8391,0.27117,0
3.9019,0.27117,0
3.9653,0.27117,0
4.0294,0.27117,0
4.094,0.27117,0
4.1594,0.27117,0
0.47856,0.25781,0
0.50774,0.25781,0
0.53722,0.25781,0
0.56699,0.25781,0
0.59706,0.25781,0
0.62742,0.25781,0
0.6581,0.25781,0
0.68907,0.25781,0
0.72036,0.25781,0
0.75196,0.25781,0
0.78388,0.25781,0
0.81612,0.25781,0
0.84868,0.25781,0
0.88156,0.25781,0
0.91478,0.25781,0
0.94832,0.25781,0
0.9822,0.25781,0
1.0164,0.25781,0
1.051,0.25781,0
1.0859,0.25781,0
1.1211,0.25781,0
1.1568,0.25781,0
1.1927,0.25781,0
1.229,0.25781,0
1.2657,0.25781,0
1.3028,0.25781,0
1.3402,0.25781,0
1.378,0.25781,0
1.4162,0.25781,0
1.4548,0.25781,0
1.4937,0.25781,0
1.533,0.25781,0
1.5728,0.25781,0
1.6129,0.25781,0
1.6534,0.25781,0
1.6944,0.25781,0
1.7357,0.25781,0
1.7774,0.25781,0
1.8196,0.25781,0
1.8622,0.25781,0
1.9052,0.25781,0
1.9487,0.25781,0
1.9926,0.25781,0
2.0369,0.25781,0
2.0817,0.25781,0
2.1269,0.25781,0
2.1725,0.25781,0
2.2187,0.25781,0
2.2652,0.25781,0
2.3123,0.25781,0
2.3598,0.25781,0
2.4078,0.25781,0
2.4563,0.25781,0
2.5053,0.25781,0
2.5547,0.25781,0
2.6046,0.25781,0
2.6551,0.25781,0
2.706,0.25781,0
2.7575,0.25781,0
2.8095,0.25781,0
2.862,0.25781,0
2.915,0.25781,0
2.9685,0.25781,0
3.0226,0.25781,0
3.0772,0.25781,0
3.1324,0.25781,0
3.1881,0.25781,0
3.2444,0.25781,0
3.3013,0.25781,0
3.3587,0.25781,0
3.4166,0.25781,0
3.4752,0.25781,0
3.5344,0.25781,0
3.5941,0.25781,0
3.6544,0.25781,0
3.7154,0.25781,0
3.7769,0.25781,0
3.8391,0.25781,0
0.53722,0.24422,0
0.56699,0.24422,0
0.59706,0.24422,0
0.62742,0.24422,0
0.6581,0.24422,0
0.68907,0.24422,0
0.72036,0.24422,0
0.75196,0.24422,0
0.78388,0.24422,0
0.81612,0.24422,0
0.84868,0.24422,0
0.88156,0.24422,0
0.91478,0.24422,0
0.94832,0.24422,0
0.9822,0.24422,0
1.0164,0.24422,0
1.051,0.24422,0
1.0859,0.24422,0
1.1211,0.24422,0
1.1568,0.24422,0
1.1927,0.24422,0
1.229,0.24422,0
1.2657,0.24422,0
1.3028,0.24422,0
1.3402,0.24422,0
1.378,0.24422,0
1.4162,0.24422,0
1.4548,0.24422,0
1.4937,0.24422,0
1.533,0.24422,0
1.5728,0.24422,0
1.6129,0.24422,0
1.6534,0.24422,0
1.6944,0.24422,0
1.7357,0.24422,0
1.7774,0.24422,0
1.8196,0.24422,0
1.8622,0.24422,0
1.9052,0.24422,0
1.9487,0.24422,0
1.9926,0.24422,0
2.0369,0.24422,0
2.0817,0.24422,0
2.1269,0.24422,0
2.1725,0.24422,0
2.2187,0.24422,0
2.2652,0.24422,0
2.3123,0.24422,0
2.3598,0.24422,0
2.4078,0.24422,0
2.4563,0.24422,0
2.5053,0.24422,0
2.5547,0.24422,0
2.6046,0.24422,0
2.6551,0.24422,0
2.706,0.24422,0
2.7575,0.24422,0
2.8095,0.24422,0
2.862,0.24422,0
2.915,0.24422,0
2.9685,0.24422,0
3.0226,0.24422,0
3.0772,0.24422,0
3.1324,0.24422,0
3.1881,0.24422,0
3.2444,0.24422,0
3.3013,0.24422,0
3.3587,0.24422,0
3.4166,0.24422,0
3.4752,0.24422,0
0.62742,0.23041,0
0.6581,0.23041,0
0.68907,0.23041,0
0.72036,0.23041,0
0.75196,0.23041,0
0.78388,0.23041,0
0.81612,0.23041,0
0.84868,0.23041,0
0.88156,0.23041,0
0.91478,0.23041,0
0.94832,0.23041,0
0.9822,0.23041,0
1.0164,0.23041,0
1.051,0.23041,0
1.0859,0.23041,0
1.1211,0.23041,0
1.1568,0.23041,0
1.1927,0.23041,0
1.229,0.23041,0
1.2657,0.23041,0
1.3028,0.23041,0
1.3402,0.23041,0
1.378,0.23041,0
1.4162,0.23041,0
1.4548,0.23041,0
1.4937,0.23041,0
1.533,0.23041,0
1.5728,0.23041,0
1.6129,0.23041,0
1.6534,0.23041,0
1.6944,0.23041,0
1.7357,0.23041,0
1.7774,0.23041,0
1.8196,0.23041,0
1.8622,0.23041,0
1.9052,0.23041,0
1.9487,0.23041,0
1.9926,0.23041,0
2.0369,0.23041,0
2.0817,0.23041,0
2.1269,0.23041,0
2.1725,0.23041,0
2.2187,0.23041,0
2.2652,0.23041,0
2.3123,0.23041,0
2.3598,0.23041,0
2.4078,0.23041,0
2.4563,0.23041,0
2.5053,0.23041,0
2.5547,0.23041,0
2.6046,0.23041,0
2.6551,0.23041,0
2.706,0.23041,0
2.7575,0.23041,0
2.8095,0.23041,0
2.862,0.23041,0
2.915,0.23041,0
2.9685,0.23041,0
3.0226,0.23041,0
3.0772,0.23041,0
3.1324,0.23041,0
3.1881,0.23041,0
0.68907,0.21643,0
0.72036,0.21643,0
0.75196,0.21643,0
0.78388,0.21643,0
0.81612,0.21643,0
0.84868,0.21643,0
0.88156,0.21643,0
0.91478,0.21643,0
0.94832,0.21643,0
0.9822,0.21643,0
1.0164,0.21643,0
1.051,0.21643,0
1.0859,0.21643,0
1.1211,0.21643,0
1.1568,0.21643,0
1.1927,0.21643,0
1.229,0.21643,0
1.2657,0.21643,0
1.3028,0.21643,0
1.3402,0.21643,0
1.378,0.21643,0
1.4162,0.21643,0
1.4548,0.21643,0
1.4937,0.21643,0
1.533,0.21643,0
1.5728,0.21643,0
1.6129,0.21643,0
1.6534,0.21643,0
1.6944,0.21643,0
1.7357,0.21643,0
1.7774,0.21643,0
1.8196,0.21643,0
1.8622,0.21643,0
1.9052,0.21643,0
1.9487,0.21643,0
1.9926,0.21643,0
2.0369,0.21643,0
2.0817,0.21643,0
2.1269,0.21643,0
2.1725,0.21643,0
2.2187,0.21643,0
2.2652,0.21643,0
2.3123,0.21643,0
2.3598,0.21643,0
2.4078,0.21643,0
2.4563,0.21643,0
2.5053,0.21643,0
2.5547,0.21643,0
2.6046,0.21643,0
2.6551,0.21643,0
2.706,0.21643,0
2.7575,0.21643,0
2.8095,0.21643,0
0.78388,0.20231,0
0.81612,0.20231,0
0.84868,0.20231,0
0.88156,0.20231,0
0.91478,0.20231,0
0.94832,0.20231,0
0.9822,0.20231,0
1.0164,0.20231,0
1.051,0.20231,0
1.0859,0.20231,0
1.1211,0.20231,0
1.1568,0.20231,0
1.1927,0.20231,0
1.229,0.20231,0
1.2657,0.20231,0
1.3028,0.20231,0
1.3402,0.20231,0
1.378,0.20231,0
1.4162,0.20231,0
1.4548,0.20231,0
1.4937,0.20231,0
1.533,0.20231,0
1.5728,0.20231,0
1.6129,0.20231,0
1.6534,0.20231,0
1.6944,0.20231,0
1.7357,0.20231,0
1.7774,0.20231,0
1.8196,0.20231,0
1.8622,0.20231,0
1.9052,0.20231,0
1.9487,0.20231,0
1.9926,0.20231,0
2.0369,0.20231,0
2.0817,0.20231,0
2.1269,0.20231,0
2.1725,0.20231,0
2.2187,0.20231,0
2.2652,0.20231,0
2.3123,0.20231,0
2.3598,0.20231,0
2.4078,0.20231,0
2.4563,0.20231,0
1.051,0.1881,0
1.0859,0.1881,0
1.1211,0.1881,0
1.1568,0.1881,0
1.1927,0.1881,0
1.229,0.1881,0
1.2657,0.1881,0
1.3028,0.1881,0
1.3402,0.1881,0
1.378,0.1881,0
1.4162,0.1881,0
1.4548,0.1881,0
1.4937,0.1881,0
1.533,0.1881,0
1.5728,0.1881,0
1.6129,0.1881,0
1.6534,0.1881,0
1.6944,0.1881,0
1.7357,0.1881,0
1.7774,0.1881,0
1.8196,0.1881,0
1.8622,0.1881,0
1.9052,0.1881,0
1.9487,0.1881,0
1.9926,0.1881,0
2.0369,0.1881,0
Thanks for your help,
Sincerely
It's possible to do with ConvexHull from SciPy and this function together with convex_hull_plot_2d yield this result for the provided dataset. Below is the code to reproduce the pictures. hull.points at the end of the code contain the resulting outlining set of points that you are looking for.
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy.spatial import ConvexHull, convex_hull_plot_2d
df = pd.DataFrame([{'x': 0.20215, 'y': 0.29703, 'z': 0},
{'x': 0.22857, 'y': 0.29703, 'z': 0},
{'x': 0.25526, 'y': 0.29703, 'z': 0},
{'x': 0.28221, 'y': 0.29703, 'z': 0},
{'x': 0.30943, 'y': 0.29703, 'z': 0},
{'x': 0.33692, 'y': 0.29703, 'z': 0},
{'x': 0.36469, 'y': 0.29703, 'z': 0},
{'x': 0.39273, 'y': 0.29703, 'z': 0},
{'x': 0.42106, 'y': 0.29703, 'z': 0},
{'x': 0.44966, 'y': 0.29703, 'z': 0},
{'x': 0.47856, 'y': 0.29703, 'z': 0},
{'x': 0.50774, 'y': 0.29703, 'z': 0},
{'x': 0.53722, 'y': 0.29703, 'z': 0},
{'x': 0.56699, 'y': 0.29703, 'z': 0},
{'x': 0.59706, 'y': 0.29703, 'z': 0},
{'x': 0.62742, 'y': 0.29703, 'z': 0},
{'x': 0.6581, 'y': 0.29703, 'z': 0},
{'x': 0.68907, 'y': 0.29703, 'z': 0},
{'x': 0.72036, 'y': 0.29703, 'z': 0},
{'x': 0.75196, 'y': 0.29703, 'z': 0},
{'x': 0.78388, 'y': 0.29703, 'z': 0},
{'x': 0.81612, 'y': 0.29703, 'z': 0},
{'x': 0.84868, 'y': 0.29703, 'z': 0},
{'x': 0.88156, 'y': 0.29703, 'z': 0},
{'x': 0.91478, 'y': 0.29703, 'z': 0},
{'x': 0.94832, 'y': 0.29703, 'z': 0},
{'x': 0.9822, 'y': 0.29703, 'z': 0},
{'x': 1.0164, 'y': 0.29703, 'z': 0},
{'x': 1.051, 'y': 0.29703, 'z': 0},
{'x': 1.0859, 'y': 0.29703, 'z': 0},
{'x': 1.1211, 'y': 0.29703, 'z': 0},
{'x': 1.1568, 'y': 0.29703, 'z': 0},
{'x': 1.1927, 'y': 0.29703, 'z': 0},
{'x': 1.229, 'y': 0.29703, 'z': 0},
{'x': 1.2657, 'y': 0.29703, 'z': 0},
{'x': 1.3028, 'y': 0.29703, 'z': 0},
{'x': 1.3402, 'y': 0.29703, 'z': 0},
{'x': 1.378, 'y': 0.29703, 'z': 0},
{'x': 1.4162, 'y': 0.29703, 'z': 0},
{'x': 1.4548, 'y': 0.29703, 'z': 0},
{'x': 1.4937, 'y': 0.29703, 'z': 0},
{'x': 1.533, 'y': 0.29703, 'z': 0},
{'x': 1.5728, 'y': 0.29703, 'z': 0},
{'x': 1.6129, 'y': 0.29703, 'z': 0},
{'x': 1.6534, 'y': 0.29703, 'z': 0},
{'x': 1.6944, 'y': 0.29703, 'z': 0},
{'x': 1.7357, 'y': 0.29703, 'z': 0},
{'x': 1.7774, 'y': 0.29703, 'z': 0},
{'x': 1.8196, 'y': 0.29703, 'z': 0},
{'x': 1.8622, 'y': 0.29703, 'z': 0},
{'x': 1.9052, 'y': 0.29703, 'z': 0},
{'x': 1.9487, 'y': 0.29703, 'z': 0},
{'x': 1.9926, 'y': 0.29703, 'z': 0},
{'x': 2.0369, 'y': 0.29703, 'z': 0},
{'x': 2.0817, 'y': 0.29703, 'z': 0},
{'x': 2.1269, 'y': 0.29703, 'z': 0},
{'x': 2.1725, 'y': 0.29703, 'z': 0},
{'x': 2.2187, 'y': 0.29703, 'z': 0},
{'x': 2.2652, 'y': 0.29703, 'z': 0},
{'x': 2.3123, 'y': 0.29703, 'z': 0},
{'x': 2.3598, 'y': 0.29703, 'z': 0},
{'x': 2.4078, 'y': 0.29703, 'z': 0},
{'x': 2.4563, 'y': 0.29703, 'z': 0},
{'x': 2.5053, 'y': 0.29703, 'z': 0},
{'x': 2.5547, 'y': 0.29703, 'z': 0},
{'x': 2.6046, 'y': 0.29703, 'z': 0},
{'x': 2.6551, 'y': 0.29703, 'z': 0},
{'x': 2.706, 'y': 0.29703, 'z': 0},
{'x': 2.7575, 'y': 0.29703, 'z': 0},
{'x': 2.8095, 'y': 0.29703, 'z': 0},
{'x': 2.862, 'y': 0.29703, 'z': 0},
{'x': 2.915, 'y': 0.29703, 'z': 0},
{'x': 2.9685, 'y': 0.29703, 'z': 0},
{'x': 3.0226, 'y': 0.29703, 'z': 0},
{'x': 3.0772, 'y': 0.29703, 'z': 0},
{'x': 3.1324, 'y': 0.29703, 'z': 0},
{'x': 3.1881, 'y': 0.29703, 'z': 0},
{'x': 3.2444, 'y': 0.29703, 'z': 0},
{'x': 3.3013, 'y': 0.29703, 'z': 0},
{'x': 3.3587, 'y': 0.29703, 'z': 0},
{'x': 3.4166, 'y': 0.29703, 'z': 0},
{'x': 3.4752, 'y': 0.29703, 'z': 0},
{'x': 3.5344, 'y': 0.29703, 'z': 0},
{'x': 3.5941, 'y': 0.29703, 'z': 0},
{'x': 3.6544, 'y': 0.29703, 'z': 0},
{'x': 3.7154, 'y': 0.29703, 'z': 0},
{'x': 3.7769, 'y': 0.29703, 'z': 0},
{'x': 3.8391, 'y': 0.29703, 'z': 0},
{'x': 3.9019, 'y': 0.29703, 'z': 0},
{'x': 3.9653, 'y': 0.29703, 'z': 0},
{'x': 4.0294, 'y': 0.29703, 'z': 0},
{'x': 4.094, 'y': 0.29703, 'z': 0},
{'x': 4.1594, 'y': 0.29703, 'z': 0},
{'x': 4.2254, 'y': 0.29703, 'z': 0},
{'x': 4.292, 'y': 0.29703, 'z': 0},
{'x': 4.3593, 'y': 0.29703, 'z': 0},
{'x': 4.4273, 'y': 0.29703, 'z': 0},
{'x': 4.496, 'y': 0.29703, 'z': 0},
{'x': 4.5654, 'y': 0.29703, 'z': 0},
{'x': 4.6354, 'y': 0.29703, 'z': 0},
{'x': 4.7062, 'y': 0.29703, 'z': 0},
{'x': 4.7776, 'y': 0.29703, 'z': 0},
{'x': 4.8498, 'y': 0.29703, 'z': 0},
{'x': 4.9227, 'y': 0.29703, 'z': 0},
{'x': 0.28221, 'y': 0.28425, 'z': 0},
{'x': 0.30943, 'y': 0.28425, 'z': 0},
{'x': 0.33692, 'y': 0.28425, 'z': 0},
{'x': 0.36469, 'y': 0.28425, 'z': 0},
{'x': 0.39273, 'y': 0.28425, 'z': 0},
{'x': 0.42106, 'y': 0.28425, 'z': 0},
{'x': 0.44966, 'y': 0.28425, 'z': 0},
{'x': 0.47856, 'y': 0.28425, 'z': 0},
{'x': 0.50774, 'y': 0.28425, 'z': 0},
{'x': 0.53722, 'y': 0.28425, 'z': 0},
{'x': 0.56699, 'y': 0.28425, 'z': 0},
{'x': 0.59706, 'y': 0.28425, 'z': 0},
{'x': 0.62742, 'y': 0.28425, 'z': 0},
{'x': 0.6581, 'y': 0.28425, 'z': 0},
{'x': 0.68907, 'y': 0.28425, 'z': 0},
{'x': 0.72036, 'y': 0.28425, 'z': 0},
{'x': 0.75196, 'y': 0.28425, 'z': 0},
{'x': 0.78388, 'y': 0.28425, 'z': 0},
{'x': 0.81612, 'y': 0.28425, 'z': 0},
{'x': 0.84868, 'y': 0.28425, 'z': 0},
{'x': 0.88156, 'y': 0.28425, 'z': 0},
{'x': 0.91478, 'y': 0.28425, 'z': 0},
{'x': 0.94832, 'y': 0.28425, 'z': 0},
{'x': 0.9822, 'y': 0.28425, 'z': 0},
{'x': 1.0164, 'y': 0.28425, 'z': 0},
{'x': 1.051, 'y': 0.28425, 'z': 0},
{'x': 1.0859, 'y': 0.28425, 'z': 0},
{'x': 1.1211, 'y': 0.28425, 'z': 0},
{'x': 1.1568, 'y': 0.28425, 'z': 0},
{'x': 1.1927, 'y': 0.28425, 'z': 0},
{'x': 1.229, 'y': 0.28425, 'z': 0},
{'x': 1.2657, 'y': 0.28425, 'z': 0},
{'x': 1.3028, 'y': 0.28425, 'z': 0},
{'x': 1.3402, 'y': 0.28425, 'z': 0},
{'x': 1.378, 'y': 0.28425, 'z': 0},
{'x': 1.4162, 'y': 0.28425, 'z': 0},
{'x': 1.4548, 'y': 0.28425, 'z': 0},
{'x': 1.4937, 'y': 0.28425, 'z': 0},
{'x': 1.533, 'y': 0.28425, 'z': 0},
{'x': 1.5728, 'y': 0.28425, 'z': 0},
{'x': 1.6129, 'y': 0.28425, 'z': 0},
{'x': 1.6534, 'y': 0.28425, 'z': 0},
{'x': 1.6944, 'y': 0.28425, 'z': 0},
{'x': 1.7357, 'y': 0.28425, 'z': 0},
{'x': 1.7774, 'y': 0.28425, 'z': 0},
{'x': 1.8196, 'y': 0.28425, 'z': 0},
{'x': 1.8622, 'y': 0.28425, 'z': 0},
{'x': 1.9052, 'y': 0.28425, 'z': 0},
{'x': 1.9487, 'y': 0.28425, 'z': 0},
{'x': 1.9926, 'y': 0.28425, 'z': 0},
{'x': 2.0369, 'y': 0.28425, 'z': 0},
{'x': 2.0817, 'y': 0.28425, 'z': 0},
{'x': 2.1269, 'y': 0.28425, 'z': 0},
{'x': 2.1725, 'y': 0.28425, 'z': 0},
{'x': 2.2187, 'y': 0.28425, 'z': 0},
{'x': 2.2652, 'y': 0.28425, 'z': 0},
{'x': 2.3123, 'y': 0.28425, 'z': 0},
{'x': 2.3598, 'y': 0.28425, 'z': 0},
{'x': 2.4078, 'y': 0.28425, 'z': 0},
{'x': 2.4563, 'y': 0.28425, 'z': 0},
{'x': 2.5053, 'y': 0.28425, 'z': 0},
{'x': 2.5547, 'y': 0.28425, 'z': 0},
{'x': 2.6046, 'y': 0.28425, 'z': 0},
{'x': 2.6551, 'y': 0.28425, 'z': 0},
{'x': 2.706, 'y': 0.28425, 'z': 0},
{'x': 2.7575, 'y': 0.28425, 'z': 0},
{'x': 2.8095, 'y': 0.28425, 'z': 0},
{'x': 2.862, 'y': 0.28425, 'z': 0},
{'x': 2.915, 'y': 0.28425, 'z': 0},
{'x': 2.9685, 'y': 0.28425, 'z': 0},
{'x': 3.0226, 'y': 0.28425, 'z': 0},
{'x': 3.0772, 'y': 0.28425, 'z': 0},
{'x': 3.1324, 'y': 0.28425, 'z': 0},
{'x': 3.1881, 'y': 0.28425, 'z': 0},
{'x': 3.2444, 'y': 0.28425, 'z': 0},
{'x': 3.3013, 'y': 0.28425, 'z': 0},
{'x': 3.3587, 'y': 0.28425, 'z': 0},
{'x': 3.4166, 'y': 0.28425, 'z': 0},
{'x': 3.4752, 'y': 0.28425, 'z': 0},
{'x': 3.5344, 'y': 0.28425, 'z': 0},
{'x': 3.5941, 'y': 0.28425, 'z': 0},
{'x': 3.6544, 'y': 0.28425, 'z': 0},
{'x': 3.7154, 'y': 0.28425, 'z': 0},
{'x': 3.7769, 'y': 0.28425, 'z': 0},
{'x': 3.8391, 'y': 0.28425, 'z': 0},
{'x': 3.9019, 'y': 0.28425, 'z': 0},
{'x': 3.9653, 'y': 0.28425, 'z': 0},
{'x': 4.0294, 'y': 0.28425, 'z': 0},
{'x': 4.094, 'y': 0.28425, 'z': 0},
{'x': 4.1594, 'y': 0.28425, 'z': 0},
{'x': 4.2254, 'y': 0.28425, 'z': 0},
{'x': 4.292, 'y': 0.28425, 'z': 0},
{'x': 4.3593, 'y': 0.28425, 'z': 0},
{'x': 4.4273, 'y': 0.28425, 'z': 0},
{'x': 4.496, 'y': 0.28425, 'z': 0},
{'x': 4.5654, 'y': 0.28425, 'z': 0},
{'x': 0.39273, 'y': 0.27117, 'z': 0},
{'x': 0.42106, 'y': 0.27117, 'z': 0},
{'x': 0.44966, 'y': 0.27117, 'z': 0},
{'x': 0.47856, 'y': 0.27117, 'z': 0},
{'x': 0.50774, 'y': 0.27117, 'z': 0},
{'x': 0.53722, 'y': 0.27117, 'z': 0},
{'x': 0.56699, 'y': 0.27117, 'z': 0},
{'x': 0.59706, 'y': 0.27117, 'z': 0},
{'x': 0.62742, 'y': 0.27117, 'z': 0},
{'x': 0.6581, 'y': 0.27117, 'z': 0},
{'x': 0.68907, 'y': 0.27117, 'z': 0},
{'x': 0.72036, 'y': 0.27117, 'z': 0},
{'x': 0.75196, 'y': 0.27117, 'z': 0},
{'x': 0.78388, 'y': 0.27117, 'z': 0},
{'x': 0.81612, 'y': 0.27117, 'z': 0},
{'x': 0.84868, 'y': 0.27117, 'z': 0},
{'x': 0.88156, 'y': 0.27117, 'z': 0},
{'x': 0.91478, 'y': 0.27117, 'z': 0},
{'x': 0.94832, 'y': 0.27117, 'z': 0},
{'x': 0.9822, 'y': 0.27117, 'z': 0},
{'x': 1.0164, 'y': 0.27117, 'z': 0},
{'x': 1.051, 'y': 0.27117, 'z': 0},
{'x': 1.0859, 'y': 0.27117, 'z': 0},
{'x': 1.1211, 'y': 0.27117, 'z': 0},
{'x': 1.1568, 'y': 0.27117, 'z': 0},
{'x': 1.1927, 'y': 0.27117, 'z': 0},
{'x': 1.229, 'y': 0.27117, 'z': 0},
{'x': 1.2657, 'y': 0.27117, 'z': 0},
{'x': 1.3028, 'y': 0.27117, 'z': 0},
{'x': 1.3402, 'y': 0.27117, 'z': 0},
{'x': 1.378, 'y': 0.27117, 'z': 0},
{'x': 1.4162, 'y': 0.27117, 'z': 0},
{'x': 1.4548, 'y': 0.27117, 'z': 0},
{'x': 1.4937, 'y': 0.27117, 'z': 0},
{'x': 1.533, 'y': 0.27117, 'z': 0},
{'x': 1.5728, 'y': 0.27117, 'z': 0},
{'x': 1.6129, 'y': 0.27117, 'z': 0},
{'x': 1.6534, 'y': 0.27117, 'z': 0},
{'x': 1.6944, 'y': 0.27117, 'z': 0},
{'x': 1.7357, 'y': 0.27117, 'z': 0},
{'x': 1.7774, 'y': 0.27117, 'z': 0},
{'x': 1.8196, 'y': 0.27117, 'z': 0},
{'x': 1.8622, 'y': 0.27117, 'z': 0},
{'x': 1.9052, 'y': 0.27117, 'z': 0},
{'x': 1.9487, 'y': 0.27117, 'z': 0},
{'x': 1.9926, 'y': 0.27117, 'z': 0},
{'x': 2.0369, 'y': 0.27117, 'z': 0},
{'x': 2.0817, 'y': 0.27117, 'z': 0},
{'x': 2.1269, 'y': 0.27117, 'z': 0},
{'x': 2.1725, 'y': 0.27117, 'z': 0},
{'x': 2.2187, 'y': 0.27117, 'z': 0},
{'x': 2.2652, 'y': 0.27117, 'z': 0},
{'x': 2.3123, 'y': 0.27117, 'z': 0},
{'x': 2.3598, 'y': 0.27117, 'z': 0},
{'x': 2.4078, 'y': 0.27117, 'z': 0},
{'x': 2.4563, 'y': 0.27117, 'z': 0},
{'x': 2.5053, 'y': 0.27117, 'z': 0},
{'x': 2.5547, 'y': 0.27117, 'z': 0},
{'x': 2.6046, 'y': 0.27117, 'z': 0},
{'x': 2.6551, 'y': 0.27117, 'z': 0},
{'x': 2.706, 'y': 0.27117, 'z': 0},
{'x': 2.7575, 'y': 0.27117, 'z': 0},
{'x': 2.8095, 'y': 0.27117, 'z': 0},
{'x': 2.862, 'y': 0.27117, 'z': 0},
{'x': 2.915, 'y': 0.27117, 'z': 0},
{'x': 2.9685, 'y': 0.27117, 'z': 0},
{'x': 3.0226, 'y': 0.27117, 'z': 0},
{'x': 3.0772, 'y': 0.27117, 'z': 0},
{'x': 3.1324, 'y': 0.27117, 'z': 0},
{'x': 3.1881, 'y': 0.27117, 'z': 0},
{'x': 3.2444, 'y': 0.27117, 'z': 0},
{'x': 3.3013, 'y': 0.27117, 'z': 0},
{'x': 3.3587, 'y': 0.27117, 'z': 0},
{'x': 3.4166, 'y': 0.27117, 'z': 0},
{'x': 3.4752, 'y': 0.27117, 'z': 0},
{'x': 3.5344, 'y': 0.27117, 'z': 0},
{'x': 3.5941, 'y': 0.27117, 'z': 0},
{'x': 3.6544, 'y': 0.27117, 'z': 0},
{'x': 3.7154, 'y': 0.27117, 'z': 0},
{'x': 3.7769, 'y': 0.27117, 'z': 0},
{'x': 3.8391, 'y': 0.27117, 'z': 0},
{'x': 3.9019, 'y': 0.27117, 'z': 0},
{'x': 3.9653, 'y': 0.27117, 'z': 0},
{'x': 4.0294, 'y': 0.27117, 'z': 0},
{'x': 4.094, 'y': 0.27117, 'z': 0},
{'x': 4.1594, 'y': 0.27117, 'z': 0},
{'x': 0.47856, 'y': 0.25781, 'z': 0},
{'x': 0.50774, 'y': 0.25781, 'z': 0},
{'x': 0.53722, 'y': 0.25781, 'z': 0},
{'x': 0.56699, 'y': 0.25781, 'z': 0},
{'x': 0.59706, 'y': 0.25781, 'z': 0},
{'x': 0.62742, 'y': 0.25781, 'z': 0},
{'x': 0.6581, 'y': 0.25781, 'z': 0},
{'x': 0.68907, 'y': 0.25781, 'z': 0},
{'x': 0.72036, 'y': 0.25781, 'z': 0},
{'x': 0.75196, 'y': 0.25781, 'z': 0},
{'x': 0.78388, 'y': 0.25781, 'z': 0},
{'x': 0.81612, 'y': 0.25781, 'z': 0},
{'x': 0.84868, 'y': 0.25781, 'z': 0},
{'x': 0.88156, 'y': 0.25781, 'z': 0},
{'x': 0.91478, 'y': 0.25781, 'z': 0},
{'x': 0.94832, 'y': 0.25781, 'z': 0},
{'x': 0.9822, 'y': 0.25781, 'z': 0},
{'x': 1.0164, 'y': 0.25781, 'z': 0},
{'x': 1.051, 'y': 0.25781, 'z': 0},
{'x': 1.0859, 'y': 0.25781, 'z': 0},
{'x': 1.1211, 'y': 0.25781, 'z': 0},
{'x': 1.1568, 'y': 0.25781, 'z': 0},
{'x': 1.1927, 'y': 0.25781, 'z': 0},
{'x': 1.229, 'y': 0.25781, 'z': 0},
{'x': 1.2657, 'y': 0.25781, 'z': 0},
{'x': 1.3028, 'y': 0.25781, 'z': 0},
{'x': 1.3402, 'y': 0.25781, 'z': 0},
{'x': 1.378, 'y': 0.25781, 'z': 0},
{'x': 1.4162, 'y': 0.25781, 'z': 0},
{'x': 1.4548, 'y': 0.25781, 'z': 0},
{'x': 1.4937, 'y': 0.25781, 'z': 0},
{'x': 1.533, 'y': 0.25781, 'z': 0},
{'x': 1.5728, 'y': 0.25781, 'z': 0},
{'x': 1.6129, 'y': 0.25781, 'z': 0},
{'x': 1.6534, 'y': 0.25781, 'z': 0},
{'x': 1.6944, 'y': 0.25781, 'z': 0},
{'x': 1.7357, 'y': 0.25781, 'z': 0},
{'x': 1.7774, 'y': 0.25781, 'z': 0},
{'x': 1.8196, 'y': 0.25781, 'z': 0},
{'x': 1.8622, 'y': 0.25781, 'z': 0},
{'x': 1.9052, 'y': 0.25781, 'z': 0},
{'x': 1.9487, 'y': 0.25781, 'z': 0},
{'x': 1.9926, 'y': 0.25781, 'z': 0},
{'x': 2.0369, 'y': 0.25781, 'z': 0},
{'x': 2.0817, 'y': 0.25781, 'z': 0},
{'x': 2.1269, 'y': 0.25781, 'z': 0},
{'x': 2.1725, 'y': 0.25781, 'z': 0},
{'x': 2.2187, 'y': 0.25781, 'z': 0},
{'x': 2.2652, 'y': 0.25781, 'z': 0},
{'x': 2.3123, 'y': 0.25781, 'z': 0},
{'x': 2.3598, 'y': 0.25781, 'z': 0},
{'x': 2.4078, 'y': 0.25781, 'z': 0},
{'x': 2.4563, 'y': 0.25781, 'z': 0},
{'x': 2.5053, 'y': 0.25781, 'z': 0},
{'x': 2.5547, 'y': 0.25781, 'z': 0},
{'x': 2.6046, 'y': 0.25781, 'z': 0},
{'x': 2.6551, 'y': 0.25781, 'z': 0},
{'x': 2.706, 'y': 0.25781, 'z': 0},
{'x': 2.7575, 'y': 0.25781, 'z': 0},
{'x': 2.8095, 'y': 0.25781, 'z': 0},
{'x': 2.862, 'y': 0.25781, 'z': 0},
{'x': 2.915, 'y': 0.25781, 'z': 0},
{'x': 2.9685, 'y': 0.25781, 'z': 0},
{'x': 3.0226, 'y': 0.25781, 'z': 0},
{'x': 3.0772, 'y': 0.25781, 'z': 0},
{'x': 3.1324, 'y': 0.25781, 'z': 0},
{'x': 3.1881, 'y': 0.25781, 'z': 0},
{'x': 3.2444, 'y': 0.25781, 'z': 0},
{'x': 3.3013, 'y': 0.25781, 'z': 0},
{'x': 3.3587, 'y': 0.25781, 'z': 0},
{'x': 3.4166, 'y': 0.25781, 'z': 0},
{'x': 3.4752, 'y': 0.25781, 'z': 0},
{'x': 3.5344, 'y': 0.25781, 'z': 0},
{'x': 3.5941, 'y': 0.25781, 'z': 0},
{'x': 3.6544, 'y': 0.25781, 'z': 0},
{'x': 3.7154, 'y': 0.25781, 'z': 0},
{'x': 3.7769, 'y': 0.25781, 'z': 0},
{'x': 3.8391, 'y': 0.25781, 'z': 0},
{'x': 0.53722, 'y': 0.24422, 'z': 0},
{'x': 0.56699, 'y': 0.24422, 'z': 0},
{'x': 0.59706, 'y': 0.24422, 'z': 0},
{'x': 0.62742, 'y': 0.24422, 'z': 0},
{'x': 0.6581, 'y': 0.24422, 'z': 0},
{'x': 0.68907, 'y': 0.24422, 'z': 0},
{'x': 0.72036, 'y': 0.24422, 'z': 0},
{'x': 0.75196, 'y': 0.24422, 'z': 0},
{'x': 0.78388, 'y': 0.24422, 'z': 0},
{'x': 0.81612, 'y': 0.24422, 'z': 0},
{'x': 0.84868, 'y': 0.24422, 'z': 0},
{'x': 0.88156, 'y': 0.24422, 'z': 0},
{'x': 0.91478, 'y': 0.24422, 'z': 0},
{'x': 0.94832, 'y': 0.24422, 'z': 0},
{'x': 0.9822, 'y': 0.24422, 'z': 0},
{'x': 1.0164, 'y': 0.24422, 'z': 0},
{'x': 1.051, 'y': 0.24422, 'z': 0},
{'x': 1.0859, 'y': 0.24422, 'z': 0},
{'x': 1.1211, 'y': 0.24422, 'z': 0},
{'x': 1.1568, 'y': 0.24422, 'z': 0},
{'x': 1.1927, 'y': 0.24422, 'z': 0},
{'x': 1.229, 'y': 0.24422, 'z': 0},
{'x': 1.2657, 'y': 0.24422, 'z': 0},
{'x': 1.3028, 'y': 0.24422, 'z': 0},
{'x': 1.3402, 'y': 0.24422, 'z': 0},
{'x': 1.378, 'y': 0.24422, 'z': 0},
{'x': 1.4162, 'y': 0.24422, 'z': 0},
{'x': 1.4548, 'y': 0.24422, 'z': 0},
{'x': 1.4937, 'y': 0.24422, 'z': 0},
{'x': 1.533, 'y': 0.24422, 'z': 0},
{'x': 1.5728, 'y': 0.24422, 'z': 0},
{'x': 1.6129, 'y': 0.24422, 'z': 0},
{'x': 1.6534, 'y': 0.24422, 'z': 0},
{'x': 1.6944, 'y': 0.24422, 'z': 0},
{'x': 1.7357, 'y': 0.24422, 'z': 0},
{'x': 1.7774, 'y': 0.24422, 'z': 0},
{'x': 1.8196, 'y': 0.24422, 'z': 0},
{'x': 1.8622, 'y': 0.24422, 'z': 0},
{'x': 1.9052, 'y': 0.24422, 'z': 0},
{'x': 1.9487, 'y': 0.24422, 'z': 0},
{'x': 1.9926, 'y': 0.24422, 'z': 0},
{'x': 2.0369, 'y': 0.24422, 'z': 0},
{'x': 2.0817, 'y': 0.24422, 'z': 0},
{'x': 2.1269, 'y': 0.24422, 'z': 0},
{'x': 2.1725, 'y': 0.24422, 'z': 0},
{'x': 2.2187, 'y': 0.24422, 'z': 0},
{'x': 2.2652, 'y': 0.24422, 'z': 0},
{'x': 2.3123, 'y': 0.24422, 'z': 0},
{'x': 2.3598, 'y': 0.24422, 'z': 0},
{'x': 2.4078, 'y': 0.24422, 'z': 0},
{'x': 2.4563, 'y': 0.24422, 'z': 0},
{'x': 2.5053, 'y': 0.24422, 'z': 0},
{'x': 2.5547, 'y': 0.24422, 'z': 0},
{'x': 2.6046, 'y': 0.24422, 'z': 0},
{'x': 2.6551, 'y': 0.24422, 'z': 0},
{'x': 2.706, 'y': 0.24422, 'z': 0},
{'x': 2.7575, 'y': 0.24422, 'z': 0},
{'x': 2.8095, 'y': 0.24422, 'z': 0},
{'x': 2.862, 'y': 0.24422, 'z': 0},
{'x': 2.915, 'y': 0.24422, 'z': 0},
{'x': 2.9685, 'y': 0.24422, 'z': 0},
{'x': 3.0226, 'y': 0.24422, 'z': 0},
{'x': 3.0772, 'y': 0.24422, 'z': 0},
{'x': 3.1324, 'y': 0.24422, 'z': 0},
{'x': 3.1881, 'y': 0.24422, 'z': 0},
{'x': 3.2444, 'y': 0.24422, 'z': 0},
{'x': 3.3013, 'y': 0.24422, 'z': 0},
{'x': 3.3587, 'y': 0.24422, 'z': 0},
{'x': 3.4166, 'y': 0.24422, 'z': 0},
{'x': 3.4752, 'y': 0.24422, 'z': 0},
{'x': 0.62742, 'y': 0.23041, 'z': 0},
{'x': 0.6581, 'y': 0.23041, 'z': 0},
{'x': 0.68907, 'y': 0.23041, 'z': 0},
{'x': 0.72036, 'y': 0.23041, 'z': 0},
{'x': 0.75196, 'y': 0.23041, 'z': 0},
{'x': 0.78388, 'y': 0.23041, 'z': 0},
{'x': 0.81612, 'y': 0.23041, 'z': 0},
{'x': 0.84868, 'y': 0.23041, 'z': 0},
{'x': 0.88156, 'y': 0.23041, 'z': 0},
{'x': 0.91478, 'y': 0.23041, 'z': 0},
{'x': 0.94832, 'y': 0.23041, 'z': 0},
{'x': 0.9822, 'y': 0.23041, 'z': 0},
{'x': 1.0164, 'y': 0.23041, 'z': 0},
{'x': 1.051, 'y': 0.23041, 'z': 0},
{'x': 1.0859, 'y': 0.23041, 'z': 0},
{'x': 1.1211, 'y': 0.23041, 'z': 0},
{'x': 1.1568, 'y': 0.23041, 'z': 0},
{'x': 1.1927, 'y': 0.23041, 'z': 0},
{'x': 1.229, 'y': 0.23041, 'z': 0},
{'x': 1.2657, 'y': 0.23041, 'z': 0},
{'x': 1.3028, 'y': 0.23041, 'z': 0},
{'x': 1.3402, 'y': 0.23041, 'z': 0},
{'x': 1.378, 'y': 0.23041, 'z': 0},
{'x': 1.4162, 'y': 0.23041, 'z': 0},
{'x': 1.4548, 'y': 0.23041, 'z': 0},
{'x': 1.4937, 'y': 0.23041, 'z': 0},
{'x': 1.533, 'y': 0.23041, 'z': 0},
{'x': 1.5728, 'y': 0.23041, 'z': 0},
{'x': 1.6129, 'y': 0.23041, 'z': 0},
{'x': 1.6534, 'y': 0.23041, 'z': 0},
{'x': 1.6944, 'y': 0.23041, 'z': 0},
{'x': 1.7357, 'y': 0.23041, 'z': 0},
{'x': 1.7774, 'y': 0.23041, 'z': 0},
{'x': 1.8196, 'y': 0.23041, 'z': 0},
{'x': 1.8622, 'y': 0.23041, 'z': 0},
{'x': 1.9052, 'y': 0.23041, 'z': 0},
{'x': 1.9487, 'y': 0.23041, 'z': 0},
{'x': 1.9926, 'y': 0.23041, 'z': 0},
{'x': 2.0369, 'y': 0.23041, 'z': 0},
{'x': 2.0817, 'y': 0.23041, 'z': 0},
{'x': 2.1269, 'y': 0.23041, 'z': 0},
{'x': 2.1725, 'y': 0.23041, 'z': 0},
{'x': 2.2187, 'y': 0.23041, 'z': 0},
{'x': 2.2652, 'y': 0.23041, 'z': 0},
{'x': 2.3123, 'y': 0.23041, 'z': 0},
{'x': 2.3598, 'y': 0.23041, 'z': 0},
{'x': 2.4078, 'y': 0.23041, 'z': 0},
{'x': 2.4563, 'y': 0.23041, 'z': 0},
{'x': 2.5053, 'y': 0.23041, 'z': 0},
{'x': 2.5547, 'y': 0.23041, 'z': 0},
{'x': 2.6046, 'y': 0.23041, 'z': 0},
{'x': 2.6551, 'y': 0.23041, 'z': 0},
{'x': 2.706, 'y': 0.23041, 'z': 0},
{'x': 2.7575, 'y': 0.23041, 'z': 0},
{'x': 2.8095, 'y': 0.23041, 'z': 0},
{'x': 2.862, 'y': 0.23041, 'z': 0},
{'x': 2.915, 'y': 0.23041, 'z': 0},
{'x': 2.9685, 'y': 0.23041, 'z': 0},
{'x': 3.0226, 'y': 0.23041, 'z': 0},
{'x': 3.0772, 'y': 0.23041, 'z': 0},
{'x': 3.1324, 'y': 0.23041, 'z': 0},
{'x': 3.1881, 'y': 0.23041, 'z': 0},
{'x': 0.68907, 'y': 0.21643, 'z': 0},
{'x': 0.72036, 'y': 0.21643, 'z': 0},
{'x': 0.75196, 'y': 0.21643, 'z': 0},
{'x': 0.78388, 'y': 0.21643, 'z': 0},
{'x': 0.81612, 'y': 0.21643, 'z': 0},
{'x': 0.84868, 'y': 0.21643, 'z': 0},
{'x': 0.88156, 'y': 0.21643, 'z': 0},
{'x': 0.91478, 'y': 0.21643, 'z': 0},
{'x': 0.94832, 'y': 0.21643, 'z': 0},
{'x': 0.9822, 'y': 0.21643, 'z': 0},
{'x': 1.0164, 'y': 0.21643, 'z': 0},
{'x': 1.051, 'y': 0.21643, 'z': 0},
{'x': 1.0859, 'y': 0.21643, 'z': 0},
{'x': 1.1211, 'y': 0.21643, 'z': 0},
{'x': 1.1568, 'y': 0.21643, 'z': 0},
{'x': 1.1927, 'y': 0.21643, 'z': 0},
{'x': 1.229, 'y': 0.21643, 'z': 0},
{'x': 1.2657, 'y': 0.21643, 'z': 0},
{'x': 1.3028, 'y': 0.21643, 'z': 0},
{'x': 1.3402, 'y': 0.21643, 'z': 0},
{'x': 1.378, 'y': 0.21643, 'z': 0},
{'x': 1.4162, 'y': 0.21643, 'z': 0},
{'x': 1.4548, 'y': 0.21643, 'z': 0},
{'x': 1.4937, 'y': 0.21643, 'z': 0},
{'x': 1.533, 'y': 0.21643, 'z': 0},
{'x': 1.5728, 'y': 0.21643, 'z': 0},
{'x': 1.6129, 'y': 0.21643, 'z': 0},
{'x': 1.6534, 'y': 0.21643, 'z': 0},
{'x': 1.6944, 'y': 0.21643, 'z': 0},
{'x': 1.7357, 'y': 0.21643, 'z': 0},
{'x': 1.7774, 'y': 0.21643, 'z': 0},
{'x': 1.8196, 'y': 0.21643, 'z': 0},
{'x': 1.8622, 'y': 0.21643, 'z': 0},
{'x': 1.9052, 'y': 0.21643, 'z': 0},
{'x': 1.9487, 'y': 0.21643, 'z': 0},
{'x': 1.9926, 'y': 0.21643, 'z': 0},
{'x': 2.0369, 'y': 0.21643, 'z': 0},
{'x': 2.0817, 'y': 0.21643, 'z': 0},
{'x': 2.1269, 'y': 0.21643, 'z': 0},
{'x': 2.1725, 'y': 0.21643, 'z': 0},
{'x': 2.2187, 'y': 0.21643, 'z': 0},
{'x': 2.2652, 'y': 0.21643, 'z': 0},
{'x': 2.3123, 'y': 0.21643, 'z': 0},
{'x': 2.3598, 'y': 0.21643, 'z': 0},
{'x': 2.4078, 'y': 0.21643, 'z': 0},
{'x': 2.4563, 'y': 0.21643, 'z': 0},
{'x': 2.5053, 'y': 0.21643, 'z': 0},
{'x': 2.5547, 'y': 0.21643, 'z': 0},
{'x': 2.6046, 'y': 0.21643, 'z': 0},
{'x': 2.6551, 'y': 0.21643, 'z': 0},
{'x': 2.706, 'y': 0.21643, 'z': 0},
{'x': 2.7575, 'y': 0.21643, 'z': 0},
{'x': 2.8095, 'y': 0.21643, 'z': 0},
{'x': 0.78388, 'y': 0.20231, 'z': 0},
{'x': 0.81612, 'y': 0.20231, 'z': 0},
{'x': 0.84868, 'y': 0.20231, 'z': 0},
{'x': 0.88156, 'y': 0.20231, 'z': 0},
{'x': 0.91478, 'y': 0.20231, 'z': 0},
{'x': 0.94832, 'y': 0.20231, 'z': 0},
{'x': 0.9822, 'y': 0.20231, 'z': 0},
{'x': 1.0164, 'y': 0.20231, 'z': 0},
{'x': 1.051, 'y': 0.20231, 'z': 0},
{'x': 1.0859, 'y': 0.20231, 'z': 0},
{'x': 1.1211, 'y': 0.20231, 'z': 0},
{'x': 1.1568, 'y': 0.20231, 'z': 0},
{'x': 1.1927, 'y': 0.20231, 'z': 0},
{'x': 1.229, 'y': 0.20231, 'z': 0},
{'x': 1.2657, 'y': 0.20231, 'z': 0},
{'x': 1.3028, 'y': 0.20231, 'z': 0},
{'x': 1.3402, 'y': 0.20231, 'z': 0},
{'x': 1.378, 'y': 0.20231, 'z': 0},
{'x': 1.4162, 'y': 0.20231, 'z': 0},
{'x': 1.4548, 'y': 0.20231, 'z': 0},
{'x': 1.4937, 'y': 0.20231, 'z': 0},
{'x': 1.533, 'y': 0.20231, 'z': 0},
{'x': 1.5728, 'y': 0.20231, 'z': 0},
{'x': 1.6129, 'y': 0.20231, 'z': 0},
{'x': 1.6534, 'y': 0.20231, 'z': 0},
{'x': 1.6944, 'y': 0.20231, 'z': 0},
{'x': 1.7357, 'y': 0.20231, 'z': 0},
{'x': 1.7774, 'y': 0.20231, 'z': 0},
{'x': 1.8196, 'y': 0.20231, 'z': 0},
{'x': 1.8622, 'y': 0.20231, 'z': 0},
{'x': 1.9052, 'y': 0.20231, 'z': 0},
{'x': 1.9487, 'y': 0.20231, 'z': 0},
{'x': 1.9926, 'y': 0.20231, 'z': 0},
{'x': 2.0369, 'y': 0.20231, 'z': 0},
{'x': 2.0817, 'y': 0.20231, 'z': 0},
{'x': 2.1269, 'y': 0.20231, 'z': 0},
{'x': 2.1725, 'y': 0.20231, 'z': 0},
{'x': 2.2187, 'y': 0.20231, 'z': 0},
{'x': 2.2652, 'y': 0.20231, 'z': 0},
{'x': 2.3123, 'y': 0.20231, 'z': 0},
{'x': 2.3598, 'y': 0.20231, 'z': 0},
{'x': 2.4078, 'y': 0.20231, 'z': 0},
{'x': 2.4563, 'y': 0.20231, 'z': 0},
{'x': 1.051, 'y': 0.1881, 'z': 0},
{'x': 1.0859, 'y': 0.1881, 'z': 0},
{'x': 1.1211, 'y': 0.1881, 'z': 0},
{'x': 1.1568, 'y': 0.1881, 'z': 0},
{'x': 1.1927, 'y': 0.1881, 'z': 0},
{'x': 1.229, 'y': 0.1881, 'z': 0},
{'x': 1.2657, 'y': 0.1881, 'z': 0},
{'x': 1.3028, 'y': 0.1881, 'z': 0},
{'x': 1.3402, 'y': 0.1881, 'z': 0},
{'x': 1.378, 'y': 0.1881, 'z': 0},
{'x': 1.4162, 'y': 0.1881, 'z': 0},
{'x': 1.4548, 'y': 0.1881, 'z': 0},
{'x': 1.4937, 'y': 0.1881, 'z': 0},
{'x': 1.533, 'y': 0.1881, 'z': 0},
{'x': 1.5728, 'y': 0.1881, 'z': 0},
{'x': 1.6129, 'y': 0.1881, 'z': 0},
{'x': 1.6534, 'y': 0.1881, 'z': 0},
{'x': 1.6944, 'y': 0.1881, 'z': 0},
{'x': 1.7357, 'y': 0.1881, 'z': 0},
{'x': 1.7774, 'y': 0.1881, 'z': 0},
{'x': 1.8196, 'y': 0.1881, 'z': 0},
{'x': 1.8622, 'y': 0.1881, 'z': 0},
{'x': 1.9052, 'y': 0.1881, 'z': 0},
{'x': 1.9487, 'y': 0.1881, 'z': 0},
{'x': 1.9926, 'y': 0.1881, 'z': 0},
{'x': 2.0369, 'y': 0.1881, 'z': 0}])
plt.scatter(data=df, x='x', y='y', label='original_data')
plt.legend()
plt.title('original data')
plt.show()
hull = ConvexHull(df[['x', 'y']])
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
convex_hull_plot_2d(hull, ax=ax)
fig.tight_layout()
plt.title('convex hull with points')
plt.show()
hull.points
array([[0.20215, 0.29703],
[0.22857, 0.29703],
[0.25526, 0.29703],
...,
[1.9487 , 0.1881 ],
[1.9926 , 0.1881 ],
[2.0369 , 0.1881 ]])
The convex hull is a nice approach, although it wouldn't solve the case that you are showing (the donut shape with an inner boundary).
I think that the algorithm that you need is called "Marching cubes" (or Marching squares, in 2D). It is a broadly used method, so you should be able to easily find some libraries in python that implement it.
https://en.wikipedia.org/wiki/Marching_squares
Basically, considering the 2D case, the algorithm works like this:
Discretize the space in a grid.
Count the number of points in every cell
Apply a threshold to the cells so you end up with either "empty" or "filled" cells
According to the state of every cell, and its neighbors, there are some predefined cases (16 in 2D) on how the boundary curve should look like.
Merge all the small curves
In 3D the idea is the same, but with cubes instead of squares, and with higher number of predefined cases.
The convex hull approaches mentioned by others do not work when the shape has holes (as in the case with your torus 🍩 example).
The problem you’re trying to solve is called surface reconstruction. The final mesh will not have the internal points as you wanted.
Open3D has some algorithms implemented for this and you can them on your data in Python.
Surface reconstruction
To convert your numpy point cloud to Open3D’s use
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(xyz)