三维散点(或者z方向分立的一组二维曲线)如何mesh连成平滑曲面
mathematica吧
全部回复
仅看楼主
level 4
轰天雷sss 楼主
现在有如图所示的数据点,z方向每隔0.05有一组数据分立分布的,每一组都形成了一条二维封闭曲线(原先数据量z方向上范围比较大,数据点已经够密了,为了减少贴出来的数据量截取了一小部分)
通过对数据的辐角和z坐标值排序,可以用ListLinePlot3D画出连成线的版本,效果还不错(部分地方变化较快有折线,可能也是后面画曲面有问题的原因)
想请问一下怎么让这些点(或二维线)生成一个三维面,类似一个筒的效果?
用ListSurfacePlot3D画出来是很乱的
已经排序好的数据:
data0=
{{-1.57, -0.0483, 1.50}, {-1.37, -0.372, 1.50}, {-1.11, -0.541,
1.50}, {-0.910, -0.567, 1.50}, {-0.801, -0.581,
1.50}, {-0.726, -0.608, 1.50}, {-0.658, -0.681,
1.50}, {-0.636, -0.757, 1.50}, {-0.630, -0.868,
1.50}, {-0.618, -1.06, 1.50}, {-0.468, -1.34, 1.50}, {-0.159, -1.56,
1.50}, {0.249, -1.65, 1.50}, {0.654, -1.55, 1.50}, {0.968, -1.35,
1.50}, {1.19, -1.11, 1.50}, {1.35, -0.861, 1.50}, {1.46, -0.607,
1.50}, {1.53, -0.354, 1.50}, {1.57, 0.137, 1.50}, {1.54, 0.370,
1.50}, {1.49, 0.590, 1.50}, {1.43, 0.792, 1.50}, {1.35, 0.968,
1.50}, {1.28, 1.10, 1.50}, {1.19, 1.19, 1.50}, {1.06, 1.28,
1.50}, {0.891, 1.37, 1.50}, {0.694, 1.45, 1.50}, {0.478, 1.51,
1.50}, {0.248, 1.55, 1.50}, {-0.244, 1.55, 1.50}, {-0.501, 1.50,
1.50}, {-0.763, 1.41, 1.50}, {-1.02, 1.27, 1.50}, {-1.28, 1.06,
1.50}, {-1.50, 0.762, 1.50}, {-1.62, 0.364, 1.50}, {-1.57, -0.102,
1.55}, {-1.36, -0.431, 1.55}, {-1.07, -0.597,
1.55}, {-0.874, -0.603, 1.55}, {-0.769, -0.610,
1.55}, {-0.696, -0.635, 1.55}, {-0.649, -0.683,
1.55}, {-0.625, -0.756, 1.55}, {-0.621, -0.861,
1.55}, {-0.619, -1.06, 1.55}, {-0.460, -1.35, 1.55}, {-0.135, -1.56,
1.55}, {0.273, -1.63, 1.55}, {0.662, -1.52, 1.55}, {0.964, -1.33,
1.55}, {1.18, -1.09, 1.55}, {1.34, -0.845, 1.55}, {1.45, -0.594,
1.55}, {1.52, -0.345, 1.55}, {1.55, 0.141, 1.55}, {1.52, 0.371,
1.55}, {1.52, 0.371, 1.55}, {1.47, 0.588, 1.55}, {1.40, 0.788,
1.55}, {1.33, 0.964, 1.55}, {1.25, 1.10, 1.55}, {1.13, 1.22,
1.55}, {0.991, 1.31, 1.55}, {0.817, 1.39, 1.55}, {0.619, 1.46,
1.55}, {0.402, 1.51, 1.55}, {0.173, 1.55, 1.55}, {-0.313, 1.52,
1.55}, {-0.564, 1.46, 1.55}, {-0.817, 1.36, 1.55}, {-1.07, 1.21,
1.55}, {-1.31, 0.991, 1.55}, {-1.51, 0.693, 1.55}, {-1.62, 0.306,
1.55}, {-1.56, -0.156, 1.60}, {-1.35, -0.490, 1.60}, {-1.04, -0.652,
1.60}, {-0.837, -0.635, 1.60}, {-0.737, -0.636,
1.60}, {-0.667, -0.660, 1.60}, {-0.640, -0.686,
1.60}, {-0.614, -0.756, 1.60}, {-0.610, -0.855,
1.60}, {-0.622, -1.05, 1.60}, {-0.450, -1.36, 1.60}, {-0.111, -1.56,
1.60}, {0.294, -1.60, 1.60}, {0.669, -1.50, 1.60}, {0.960, -1.30,
1.60}, {1.17, -1.07, 1.60}, {1.33, -0.829, 1.60}, {1.43, -0.582,
1.60}, {1.50, -0.336, 1.60}, {1.53, 0.144, 1.60}, {1.50, 0.372,
1.60}, {1.45, 0.587, 1.60}, {1.38, 0.785, 1.60}, {1.30, 0.960,
1.60}, {1.22, 1.10, 1.60}, {1.06, 1.25, 1.60}, {0.921, 1.33,
1.60}, {0.744, 1.40, 1.60}, {0.544, 1.47, 1.60}, {0.328, 1.51,
1.60}, {0.0997, 1.53, 1.60}, {-0.379, 1.49, 1.60}, {-0.624, 1.42,
1.60}, {-0.867, 1.30, 1.60}, {-1.11, 1.14, 1.60}, {-1.33, 0.921,
1.60}, {-1.52, 0.625, 1.60}, {-1.61, 0.247, 1.60}, {-1.55, -0.210,
1.65}, {-1.33, -0.546, 1.65}, {-0.996, -0.705,
1.65}, {-0.799, -0.664, 1.65}, {-0.706, -0.661,
1.65}, {-0.637, -0.683, 1.65}, {-0.631, -0.689,
1.65}, {-0.603, -0.756, 1.65}, {-0.599, -0.849,
1.65}, {-0.624, -1.05, 1.65}, {-0.439, -1.37,
1.65}, {-0.0871, -1.56, 1.65}, {0.314, -1.58, 1.65}, {0.675, -1.47,
1.65}, {0.955, -1.28, 1.65}, {1.16, -1.05, 1.65}, {1.32, -0.813,
1.65}, {1.42, -0.570, 1.65}, {1.48, -0.327, 1.65}, {1.51, 0.148,
1.65}, {1.48, 0.373, 1.65}, {1.43, 0.586, 1.65}, {1.36, 0.782,
1.65}, {1.28, 0.955, 1.65}, {1.19, 1.10, 1.65}, {1.10, 1.18,
1.65}, {1.09, 1.19, 1.65}, {0.998, 1.27, 1.65}, {0.851, 1.35,
1.65}, {0.672, 1.42, 1.65}, {0.471, 1.47, 1.65}, {0.255, 1.51,
1.65}, {0.0281, 1.52, 1.65}, {-0.443, 1.45, 1.65}, {-0.681, 1.37,
1.65}, {-0.915, 1.25, 1.65}, {-1.14, 1.08, 1.65}, {-1.35, 0.851,
1.65}, {-1.52, 0.556, 1.65}, {-1.60, 0.187, 1.65}, {-1.53, -0.263,
1.70}, {-1.31, -0.600, 1.70}, {-0.951, -0.757,
1.70}, {-0.761, -0.691, 1.70}, {-0.674, -0.684,
1.70}, {-0.592, -0.756, 1.70}, {-0.587, -0.844,
1.70}, {-0.628, -1.04, 1.70}, {-0.426, -1.38,
1.70}, {-0.0639, -1.55, 1.70}, {0.331, -1.56, 1.70}, {0.679, -1.44,
1.70}, {0.951, -1.25, 1.70}, {1.15, -1.03, 1.70}, {1.30, -0.798,
1.70}, {1.41, -0.558, 1.70}, {1.47, -0.317, 1.70}, {1.50, 0.152,
1.70}, {1.47, 0.375, 1.70}, {1.41, 0.585, 1.70}, {1.34, 0.779,
1.70}, {1.25, 0.951, 1.70}, {1.16, 1.09, 1.70}, {1.07, 1.19,
1.70}, {1.04, 1.21, 1.70}, {0.933, 1.29, 1.70}, {0.782, 1.37,
1.70}, {0.600, 1.43, 1.70}, {0.398, 1.48, 1.70}, {0.183, 1.50,
1.70}, {-0.0418, 1.50, 1.70}, {-0.504, 1.42, 1.70}, {-0.734, 1.32,
1.70}, {-0.959, 1.19, 1.70}, {-1.17, 1.01, 1.70}, {-1.37, 0.782,
1.70}, {-1.52, 0.488, 1.70}, {-1.59, 0.127, 1.70}, {-1.51, -0.316,
1.75}, {-1.29, -0.651, 1.75}, {-0.903, -0.807,
1.75}, {-0.724, -0.714, 1.75}, {-0.642, -0.706,
1.75}, {-0.580, -0.758, 1.75}, {-0.574, -0.840,
1.75}, {-0.633, -1.03, 1.75}, {-0.411, -1.38,
1.75}, {-0.0414, -1.54, 1.75}, {0.346, -1.54, 1.75}, {0.683, -1.42,
1.75}, {0.947, -1.23, 1.75}, {1.15, -1.01, 1.75}, {1.29, -0.783,
1.75}, {1.39, -0.546, 1.75}, {1.45, -0.308, 1.75}, {1.48, 0.156,
1.75}, {1.45, 0.376, 1.75}, {1.39, 0.584, 1.75}, {1.32, 0.776,
1.75}, {1.23, 0.947, 1.75}, {1.14, 1.09, 1.75}, {1.04, 1.19,
1.75}, {0.981, 1.24, 1.75}, {0.868, 1.31, 1.75}, {0.712, 1.38,
1.75}, {0.529, 1.44, 1.75}, {0.327, 1.47, 1.75}, {0.112, 1.49,
1.75}, {-0.110, 1.48, 1.75}, {-0.562, 1.38, 1.75}, {-0.785, 1.27,
1.75}, {-1.00, 1.13, 1.75}, {-1.20, 0.947, 1.75}, {-1.38, 0.712,
1.75}, {-1.52, 0.420, 1.75}, {-1.58, 0.0662, 1.75}, {-1.49, -0.367,
1.80}, {-1.26, -0.700, 1.80}, {-0.848, -0.857,
1.80}, {-0.688, -0.736, 1.80}, {-0.611, -0.727,
1.80}, {-0.569, -0.760, 1.80}, {-0.560, -0.837,
1.80}, {-0.642, -1.02, 1.80}, {-0.394, -1.39,
1.80}, {-0.0197, -1.53, 1.80}, {0.360, -1.52, 1.80}, {0.687, -1.39,
1.80}, {0.943, -1.21, 1.80}, {1.14, -0.995, 1.80}, {1.28, -0.768,
1.80}, {1.38, -0.534, 1.80}, {1.44, -0.299, 1.80}, {1.46, 0.160,
1.80}, {1.43, 0.378, 1.80}, {1.37, 0.583, 1.80}, {1.30, 0.773,
1.80}, {1.21, 0.943, 1.80}, {1.11, 1.08, 1.80}, {1.02, 1.18,
1.80}, {0.922, 1.26, 1.80}, {0.802, 1.33, 1.80}, {0.643, 1.39,
1.80}, {0.458, 1.44, 1.80}, {0.256, 1.47, 1.80}, {0.0432, 1.48,
1.80}, {-0.176, 1.46, 1.80}, {-0.618, 1.33, 1.80}, {-0.833, 1.22,
1.80}, {-1.04, 1.07, 1.80}, {-1.23, 0.881, 1.80}, {-1.39, 0.643,
1.80}, {-1.51, 0.352, 1.80}, {-1.56, 0.00576,
1.80}, {-1.54, -0.0542, 1.85}, {-1.46, -0.418,
1.85}, {-1.23, -0.746, 1.85}, {-0.652, -0.755,
1.85}, {-0.781, -0.910, 1.85}, {-0.579, -0.746,
1.85}, {-0.558, -0.762, 1.85}, {-0.660, -1.00,
1.85}, {-0.546, -0.835, 1.85}, {-0.376, -1.39,
1.85}, {0.00114, -1.52, 1.85}, {0.373, -1.50, 1.85}, {0.689, -1.37,
1.85}, {0.938, -1.19, 1.85}, {1.13, -0.977, 1.85}, {1.27, -0.753,
1.85}, {1.36, -0.523, 1.85}, {1.42, -0.290, 1.85}, {1.44, 0.163,
1.85}, {1.41, 0.379, 1.85}, {1.35, 0.582, 1.85}, {1.28, 0.770,
1.85}, {1.19, 0.938, 1.85}, {1.09, 1.08, 1.85}, {0.992, 1.18,
1.85}, {0.862, 1.28, 1.85}, {0.737, 1.35, 1.85}, {0.574, 1.40,
1.85}, {0.388, 1.44, 1.85}, {0.187, 1.46, 1.85}, {-0.0245, 1.46,
1.85}, {-0.241, 1.43, 1.85}, {-0.671, 1.29, 1.85}, {-0.878, 1.17,
1.85}, {-1.07, 1.01, 1.85}, {-1.25, 0.814, 1.85}, {-1.40, 0.574,
1.85}, {-1.51, 0.285, 1.85}, {-1.52, -0.113, 1.90}, {-1.43, -0.467,
1.90}, {-1.20, -0.788, 1.90}, {-0.617, -0.772,
1.90}, {-0.548, -0.765, 1.90}, {-0.731, -1.02,
1.90}, {-0.658, -0.920, 1.90}, {-0.547, -0.766,
1.90}, {-0.532, -0.833, 1.90}, {-0.357, -1.39,
1.90}, {0.0211, -1.51, 1.90}, {0.384, -1.48, 1.90}, {0.691, -1.35,
1.90}, {0.933, -1.17, 1.90}, {1.12, -0.960, 1.90}, {1.25, -0.739,
1.90}, {1.35, -0.511, 1.90}, {1.41, -0.282, 1.90}, {1.43, 0.167,
1.90}, {1.39, 0.380, 1.90}, {1.34, 0.581, 1.90}, {1.26, 0.767,
1.90}, {1.17, 0.933, 1.90}, {1.07, 1.07, 1.90}, {0.968, 1.18,
1.90}, {0.802, 1.30, 1.90}, {0.671, 1.36, 1.90}, {0.506, 1.41,
1.90}, {0.319, 1.44, 1.90}, {0.118, 1.45, 1.90}, {-0.0906, 1.44,
1.90}, {-0.303, 1.40, 1.90}, {-0.722, 1.24, 1.90}, {-0.920, 1.11,
1.90}, {-1.10, 0.949, 1.90}, {-1.27, 0.748, 1.90}, {-1.41, 0.506,
1.90}, {-1.50, 0.218, 1.90}, {-1.50, -0.172, 1.95}, {-1.40, -0.515,
1.95}, {-1.17, -0.828, 1.95}, {-0.583, -0.789,
1.95}, {-0.729, -1.08, 1.95}, {-0.607, -0.896,
1.95}, {-0.517, -0.833, 1.95}, {-0.336, -1.39,
1.95}, {0.0401, -1.49, 1.95}, {0.394, -1.45, 1.95}, {0.692, -1.32,
1.95}, {0.928, -1.15, 1.95}, {1.11, -0.942, 1.95}, {1.24, -0.724,
1.95}, {1.34, -0.500, 1.95}, {1.39, -0.273, 1.95}, {1.41, 0.170,
1.95}, {1.37, 0.381, 1.95}, {1.32, 0.580, 1.95}, {1.24, 0.763,
1.95}, {1.15, 0.928, 1.95}, {1.05, 1.07, 1.95}, {0.944, 1.17,
1.95}, {0.844, 1.23, 1.95}, {0.830, 1.24, 1.95}, {0.740, 1.31,
1.95}, {0.604, 1.37, 1.95}, {0.438, 1.41, 1.95}, {0.251, 1.43,
1.95}, {0.0511, 1.44, 1.95}, {-0.155, 1.42, 1.95}, {-0.363, 1.37,
1.95}, {-0.769, 1.19, 1.95}, {-0.959, 1.06, 1.95}, {-1.13, 0.886,
1.95}, {-1.29, 0.681, 1.95}, {-1.41, 0.438, 1.95}, {-1.49, 0.153,
1.95}, {-1.47, -0.229, 2.00}, {-1.37, -0.561, 2.00}, {-1.13, -0.865,
2.00}, {-0.550, -0.803, 2.00}, {-0.568, -0.885,
2.00}, {-0.713, -1.11, 2.00}, {-0.502, -0.834,
2.00}, {-0.315, -1.39, 2.00}, {0.0582, -1.48, 2.00}, {0.403, -1.43,
2.00}, {0.693, -1.30, 2.00}, {0.922, -1.13, 2.00}, {1.10, -0.925,
2.00}, {1.23, -0.710, 2.00}, {1.32, -0.489, 2.00}, {1.38, -0.265,
2.00}, {1.39, 0.173, 2.00}, {1.36, 0.381, 2.00}, {1.30, 0.578,
2.00}, {1.22, 0.760, 2.00}, {1.13, 0.922, 2.00}, {1.02, 1.06,
2.00}, {0.920, 1.17, 2.00}, {0.820, 1.23, 2.00}, {0.775, 1.26,
2.00}, {0.678, 1.32, 2.00}, {0.539, 1.37, 2.00}, {0.370, 1.41,
2.00}, {0.183, 1.43, 2.00}, {-0.0146, 1.42, 2.00}, {-0.218, 1.39,
2.00}, {-0.422, 1.34, 2.00}, {-0.814, 1.14, 2.00}, {-0.994, 0.998,
2.00}, {-1.16, 0.823, 2.00}, {-1.30, 0.615, 2.00}, {-1.41, 0.370,
2.00}, {-1.47, 0.0879, 2.00}};
2024年10月14日 09点10分 1
level 9
MaxPlotPoints 设定有误,应该 MaxPlotPoints->Infinity
2024年10月15日 00点10分 2
或者干脆别设,效果还好一点……
2024年11月02日 05点11分
吧务
level 15
此类问题似乎没有通用的解法,不过你这个问题算温柔了。如果你对按2楼方法改过的ListSurfacePlot3D还是不满意的话:
region = ConvexHullMesh@data0
poly = region["BoundaryPolygons"]
Graphics3D[region["BoundaryPolygons"][[1, ;; 2]],
BoxRatios -> {1, 1, 1}]
要是还不满意的话就要按位置关系手动构造网格了。
2024年11月02日 06点11分 3
1