Mathematica Asked by Mr Puh on December 28, 2020
I have data like this:
DataVisualizationPlot = ListPointPlot3D[data]
And would like to obtain the representing surface like this:
surfacefunc = BSplineFunction[data, SplineClosed -> {True, True}, SplineDegree -> 3];
surface = BSplineSurface[data, SplineClosed -> {True, True}, SplineDegree -> 3];
Show[Graphics3D[surface], DataVisualizationPlot]
Now I would like to obtain a Region
from surfacefunc
or surface
. How would I do this?
I tried:
ParametricRegion[{Indexed[surfacefunc[θ, φ], 1], Indexed[surfacefunc[θ, φ], 2], Indexed[surfacefunc[θ, φ], 3]}, {{θ, 0, 1}, {φ, 0, 1}}]
According to this this questions. But this fails (gives me back my input).
Here is the (downsampled) data I am using:
data = {{{20.7241, 2.6313, -0.958896}, {20.6579, 1.6232, 2.17988}, {19.6809,
0.809182, 4.93326}, {18.1495, 0.232267, 6.96528}, {16.0862,
0.25068, 8.23515}, {13.305, 0.122614, 8.10287}, {12.5783, -1.66508,
5.51201}, {13.362, -1.56645, 2.79238}, {14.0258, 0.354933,
0.540142}, {13.7853, 2.23253, -1.90586}, {12.9562,
3.72589, -4.47214}, {13.9527, 3.58837, -6.95238}, {16.7421,
2.63516, -7.69454}, {18.7952, 2.79434, -6.0844}, {20.0849,
2.83319, -3.73606}, {20.7241, 2.6313, -0.958896}}, {{19.468,
6.31246, -2.02679}, {19.3781, 6.2076, 0.806302}, {18.6902, 5.76271,
3.60029}, {17.531, 4.71474, 6.25544}, {15.8671, 3.81076,
8.06302}, {13.7203, 3.16293, 8.86713}, {11.0759, 2.37486,
8.15418}, {10.1418, 1.42822, 5.40309}, {12.3264, 0.516888,
3.05301}, {13.4832, 1.76188, 0.598635}, {13.4504,
3.59678, -1.8133}, {12.6405, 5.60668, -4.13329}, {13.6336,
6.58546, -5.89892}, {16.7385, 6.34902, -6.59126}, {18.689,
6.39298, -4.70006}, {19.468, 6.31246, -2.02679}}, {{17.0021,
10.4027, -2.69022}, {17.3318, 9.75113, 0.187506}, {16.3727,
9.33611, 2.96241}, {15.1913, 8.09968, 5.71207}, {13.5028, 6.82737,
7.74435}, {11.3616, 5.69612, 8.67034}, {9.30278, 4.11132,
8.25942}, {7.95726, 2.94108, 6.24303}, {8.88154, 2.46133,
3.38205}, {11.7948, 2.32406, 1.65432}, {12.6464,
3.87895, -0.797979}, {12.2489, 5.95015, -2.77211}, {11.9038,
7.7919, -4.04264}, {13.2866, 9.57274, -5.16344}, {15.2138,
10.6008, -4.75862}, {17.0021, 10.4027, -2.69022}}, {{14.1895,
13.1735, -2.40893}, {15.1891, 12.0797, 0.318843}, {14.0102,
11.4668, 3.04077}, {12.0694, 10.758, 5.24092}, {9.83536, 9.32558,
6.90425}, {7.91743, 7.28718, 7.68509}, {6.21514, 5.02538,
7.13403}, {5.12778, 3.59505, 4.86797}, {5.5905, 3.30795,
2.32939}, {8.45417, 3.90559, 0.410677}, {11.1106,
5.08825, -1.28437}, {10.7999, 7.10519, -2.83511}, {9.99013,
9.23944, -3.66546}, {10.9745, 12.2539, -3.79284}, {12.4215,
13.2876, -3.40139}, {14.1895, 13.1735, -2.40893}}, {{11.2012,
15.6801, -0.962747}, {12.7699, 14.0564, 0.727781}, {11.4534,
13.1432, 3.22443}, {9.00629, 12.161, 4.78537}, {6.51459, 10.6795,
5.50792}, {4.67103, 8.1836, 5.72466}, {3.79296, 5.65757,
5.4768}, {2.91137, 3.46482, 3.05997}, {3.18801, 3.48183,
0.119388}, {4.724, 4.4462, -1.59956}, {7.10721,
6.07631, -2.54694}, {8.57125, 8.24611, -3.48069}, {8.33168,
11.0158, -4.30245}, {7.92445, 14.0864, -3.69932}, {8.97529,
16.3203, -1.60139}, {11.2012, 15.6801, -0.962747}}, {{7.97877,
17.5406, 0.962748}, {9.64617, 15.933, 1.60139}, {8.23695, 13.906,
3.69932}, {5.37414, 12.7234, 4.30245}, {2.85572, 11.546,
3.48069}, {1.70864, 9.19318, 2.54694}, {1.48852, 6.3142,
1.59956}, {1.42135, 4.50182, -0.119387}, {1.54494,
4.25373, -3.05997}, {3.00312, 6.11359, -5.4768}, {4.7517,
8.13703, -5.72466}, {5.99141, 10.9815, -5.50792}, {6.02859,
13.8802, -4.78537}, {5.65562, 16.4905, -3.22443}, {5.78823,
18.0872, -0.727781}, {7.97877, 17.5406, 0.962748}}, {{4.31384,
18.8752, 2.40893}, {5.29669, 17.4011, 3.40139}, {5.12488, 15.6312,
3.79284}, {3.00652, 13.2714, 3.66546}, {0.75335, 12.9055,
2.83511}, {-1.14876, 12.1662, 1.28437}, {-0.844748,
9.27433, -0.410678}, {0.0695202, 6.49549, -2.3294}, {0.549512,
6.23831, -4.86797}, {1.24454, 7.89516, -7.13403}, {2.35217,
10.5003, -7.68509}, {3.15851, 13.1805, -6.90425}, {3.28199,
15.8314, -5.24092}, {2.92538, 17.8666, -3.04077}, {2.86678,
19.194, -0.318843}, {4.31384, 18.8752, 2.40893}}, {{0.507987,
19.9256, 2.69022}, {1.57368, 18.4759, 4.75862}, {1.64693, 16.2929,
5.16344}, {0.796068, 14.205, 4.04264}, {-0.971442, 13.5829,
2.77211}, {-2.96394, 12.8916, 0.797978}, {-3.88472,
11.3767, -1.65432}, {-2.30919, 8.9223, -3.38205}, {-1.43158,
8.36173, -6.24303}, {-1.09089, 10.1121, -8.25942}, {-0.747821,
12.6875, -8.67034}, {-0.838713, 15.1074, -7.74435}, {-0.58112,
17.2059, -5.71207}, {-0.101055, 18.8473, -2.96241}, {-0.22116,
19.8853, -0.187507}, {0.507987, 19.9256, 2.69022}}, {{-4.26724,
20.016, 2.02679}, {-3.808, 19.3816, 4.70006}, {-2.87086, 17.6705,
6.59126}, {-1.11363, 15.0998, 5.89892}, {-1.46473, 13.7503,
4.13329}, {-3.6103, 13.4468, 1.8133}, {-5.21576,
12.5577, -0.598634}, {-5.71556, 10.9334, -3.05301}, {-3.834,
9.49712, -5.40309}, {-3.48124, 10.7794, -8.15418}, {-4.12095,
13.4636, -8.86713}, {-4.63333, 15.6467, -8.06302}, {-4.68242,
17.5397, -6.25545}, {-4.35444, 19.0675, -3.6003}, {-4.31311,
19.8857, -0.806302}, {-4.26724, 20.016, 2.02679}}, {{-8.08329,
19.2633, 0.958896}, {-7.58884, 18.8106, 3.73606}, {-6.97763,
17.6743, 6.0844}, {-6.08895, 15.8167, 7.69454}, {-3.86874, 13.8776,
6.95238}, {-3.25136, 13.0833, 4.47214}, {-4.95921, 13.0547,
1.90586}, {-6.70552, 12.3242, -0.540142}, {-8.03756,
10.7886, -2.79237}, {-7.73117, 10.0606, -5.51201}, {-6.54633,
11.5838, -8.10287}, {-7.82599, 14.0564, -8.23515}, {-8.8736,
15.8341, -6.96528}, {-9.13965, 17.4487, -4.93326}, {-8.9232,
18.7018, -2.17989}, {-8.08329, 19.2633, 0.958896}}, {{-12.6408,
16.632, -0.958896}, {-11.7347, 17.0786, 2.17988}, {-10.5412,
16.6395, 4.93326}, {-9.2759, 15.6018, 6.96528}, {-8.26018, 13.8057,
8.23515}, {-6.75871, 11.4612, 8.10287}, {-4.84717, 11.7257,
5.51201}, {-5.32439, 12.355, 2.79238}, {-7.32028, 11.9692,
0.540142}, {-8.82606, 10.8221, -1.90586}, {-9.70479,
9.35742, -4.47214}, {-10.084, 10.2892, -6.95238}, {-10.6532,
13.1815, -7.69454}, {-11.8176, 14.8799, -6.0844}, {-12.4961,
15.9774, -3.73606}, {-12.6408, 16.632, -0.958896}}, {{-15.2007,
13.7035, -2.02679}, {-15.065, 13.6781, 0.806302}, {-14.3357,
13.3048, 3.60029}, {-12.8486, 12.8249, 6.25544}, {-11.2338,
11.8359, 8.06302}, {-9.5993, 10.3006, 8.86713}, {-7.59461, 8.40454,
8.15418}, {-6.30775, 8.0689, 5.40309}, {-6.61084, 10.4165,
3.05301}, {-8.26742, 10.7958, 0.598635}, {-9.84011,
9.85001, -1.8133}, {-11.1758, 8.14366, -4.13329}, {-12.52,
8.51432, -5.89892}, {-13.8677, 11.3215, -6.59126}, {-14.881,
12.9886, -4.70006}, {-15.2007, 13.7035, -2.02679}}, {{-17.51,
9.52286, -2.69022}, {-17.1106, 10.1342, 0.187506}, {-16.2717,
9.51114, 2.96241}, {-14.6102, 9.10621, 5.71207}, {-12.6641,
8.28006, 7.74435}, {-10.6138, 6.99138, 8.67034}, {-8.2119, 6.00079,
8.25942}, {-6.52568, 5.42065, 6.24303}, {-6.57235, 6.46097,
3.38205}, {-7.91012, 9.0526, 1.65432}, {-9.68247,
9.01263, -0.797979}, {-11.2774, 7.63274, -2.77211}, {-12.6999,
6.41306, -4.04264}, {-14.9335, 6.72018, -5.16344}, {-16.7875,
7.87511, -4.75862}, {-17.51, 9.52286, -2.69022}}, {{-18.5033,
5.7017, -2.40893}, {-18.0559, 7.11428, 0.318843}, {-16.9356,
6.39984, 3.04077}, {-15.3514, 5.07342, 5.24092}, {-12.9939,
3.85488, 6.90425}, {-10.2696, 3.2131, 7.68509}, {-7.45968, 2.86978,
7.13403}, {-5.67729, 2.64327, 4.86797}, {-5.66002, 3.18754,
2.32939}, {-7.60943, 5.36873, 0.410677}, {-9.96187,
7.07796, -1.28437}, {-11.5532, 5.80035, -2.83511}, {-12.9967,
4.03199, -3.66546}, {-16.0994, 3.37731, -3.79284}, {-17.7182,
4.1135, -3.40139}, {-18.5033, 5.7017, -2.40893}}, {{-19.18,
1.86048, -0.962747}, {-18.5581, 4.03085, 0.727781}, {-17.109,
3.34736, 3.22443}, {-15.0349, 1.71918, 4.78537}, {-12.506,
0.302055, 5.50792}, {-9.42272, -0.0465748, 5.72466}, {-6.79608,
0.456018, 5.4768}, {-4.45631, 0.788911, 3.05997}, {-4.60936,
1.01998, 0.119388}, {-6.21252, 1.86801, -1.59956}, {-8.81584,
3.11687, -2.54694}, {-11.427, 3.29987, -3.48069}, {-13.7058,
1.70754, -4.30245}, {-16.1614, -0.180422, -3.69932}, {-18.6215,
-0.387334, -1.60139}, {-19.18,
1.86048, -0.962747}}, {{-19.18, -1.86047, 0.962748}, {-18.6214,
0.387334, 1.60139}, {-16.1614, 0.180418,
3.69932}, {-13.7058, -1.70754, 4.30245}, {-11.427, -3.29987,
3.48069}, {-8.81584, -3.11687, 2.54694}, {-6.21252, -1.86801,
1.59956}, {-4.60936, -1.01998, -0.119387}, {-4.45631, -0.788912,
-3.05997}, {-6.79608, -0.456018, -5.4768}, {-9.42272,
0.0465741, -5.72466}, {-12.506, -0.302058, -5.50792}, {-15.0349,
-1.71918, -4.78537}, {-17.109, -3.34736, -3.22443}, {-18.5581,
-4.03085, -0.727781}, {-19.18, -1.86047,
0.962748}}, {{-18.5033, -5.70169, 2.40893}, {-17.7182, -4.1135,
3.40139}, {-16.0994, -3.37731, 3.79284}, {-12.9967, -4.03199,
3.66546}, {-11.5532, -5.80035, 2.83511}, {-9.96187, -7.07796,
1.28437}, {-7.60943, -5.36874, -0.410678}, {-5.66002, -3.18754,
-2.3294}, {-5.67729, -2.64327, -4.86797}, {-7.45968, -2.86978,
-7.13403}, {-10.2696, -3.2131, -7.68509}, {-12.9939, -3.85488,
-6.90425}, {-15.3514, -5.07343, -5.24092}, {-16.9356, -6.39984,
-3.04077}, {-18.0559, -7.11429, -0.318843}, {-18.5033, -5.70169,
2.40893}}, {{-17.5101, -9.52286, 2.69022}, {-16.7875, -7.87511,
4.75862}, {-14.9335, -6.72018, 5.16344}, {-12.6999, -6.41306,
4.04264}, {-11.2774, -7.63274, 2.77211}, {-9.68247, -9.01263,
0.797978}, {-7.91012, -9.0526, -1.65432}, {-6.57235, -6.46097,
-3.38205}, {-6.52568, -5.42065, -6.24303}, {-8.2119, -6.00079,
-8.25942}, {-10.6138, -6.99138, -8.67034}, {-12.6641, -8.28006,
-7.74435}, {-14.6102, -9.10621, -5.71207}, {-16.2717, -9.51114,
-2.96241}, {-17.1106, -10.1342, -0.187507}, {-17.5101, -9.52286,
2.69022}}, {{-15.2007, -13.7035, 2.02679}, {-14.881, -12.9886,
4.70006}, {-13.8677, -11.3215, 6.59126}, {-12.52, -8.51431,
5.89892}, {-11.1758, -8.14367, 4.13329}, {-9.8401, -9.85,
1.8133}, {-8.26743, -10.7958, -0.598634}, {-6.61084, -10.4165,
-3.05301}, {-6.30775, -8.0689, -5.40309}, {-7.59462, -8.40454,
-8.15418}, {-9.5993, -10.3006, -8.86713}, {-11.2338, -11.8359,
-8.06302}, {-12.8486, -12.8249, -6.25545}, {-14.3357, -13.3048,
-3.6003}, {-15.065, -13.6781, -0.806302}, {-15.2007, -13.7035,
2.02679}}, {{-12.6408, -16.632, 0.958896}, {-12.4961, -15.9774,
3.73606}, {-11.8176, -14.8799, 6.0844}, {-10.6532, -13.1815,
7.69454}, {-10.084, -10.2892, 6.95238}, {-9.70479, -9.35741,
4.47214}, {-8.82606, -10.8221,
1.90586}, {-7.32028, -11.9692, -0.540142}, {-5.32439, -12.355,
-2.79237}, {-4.84717, -11.7257, -5.51201}, {-6.75871, -11.4612,
-8.10287}, {-8.26018, -13.8057, -8.23515}, {-9.2759, -15.6018,
-6.96528}, {-10.5412, -16.6395, -4.93326}, {-11.7347, -17.0786,
-2.17989}, {-12.6408, -16.632,
0.958896}}, {{-8.08329, -19.2633, -0.958896}, {-8.9232, -18.7018,
2.17988}, {-9.13965, -17.4487, 4.93326}, {-8.8736, -15.8341,
6.96528}, {-7.82599, -14.0564, 8.23515}, {-6.54633, -11.5838,
8.10287}, {-7.73117, -10.0606, 5.51201}, {-8.03756, -10.7886,
2.79238}, {-6.70552, -12.3242,
0.540142}, {-4.9592, -13.0546, -1.90586}, {-3.25137, -13.0833,
-4.47214}, {-3.86874, -13.8776, -6.95238}, {-6.08895, -15.8167,
-7.69454}, {-6.97763, -17.6743, -6.0844}, {-7.58884, -18.8106,
-3.73606}, {-8.08329, -19.2633, -0.958896}}, {{-4.26724, -20.016,
-2.02679}, {-4.31311, -19.8857, 0.806302}, {-4.35444, -19.0675,
3.60029}, {-4.68242, -17.5397, 6.25544}, {-4.63333, -15.6467,
8.06302}, {-4.12095, -13.4636, 8.86713}, {-3.48124, -10.7794,
8.15418}, {-3.834, -9.49712, 5.40309}, {-5.71556, -10.9334,
3.05301}, {-5.21576, -12.5577,
0.598635}, {-3.6103, -13.4468, -1.8133}, {-1.46473, -13.7503,
-4.13329}, {-1.11363, -15.0998, -5.89892}, {-2.87086, -17.6705,
-6.59126}, {-3.808, -19.3816, -4.70006}, {-4.26724, -20.016,
-2.02679}}, {{0.50799, -19.9256, -2.69022}, {-0.221158, -19.8853,
0.187506}, {-0.101052, -18.8472, 2.96241}, {-0.581119, -17.2059,
5.71207}, {-0.83871, -15.1074, 7.74435}, {-0.74782, -12.6875,
8.67034}, {-1.09088, -10.1121, 8.25942}, {-1.43158, -8.36173,
6.24303}, {-2.30919, -8.9223, 3.38205}, {-3.88472, -11.3767,
1.65432}, {-2.96393, -12.8916, -0.797979}, {-0.971442, -13.5829,
-2.77211}, {0.796072, -14.205, -4.04264}, {1.64693, -16.2929,
-5.16344}, {1.57368, -18.4759, -4.75862}, {0.50799, -19.9256,
-2.69022}}, {{4.31384, -18.8752, -2.40893}, {2.86678, -19.194,
0.318843}, {2.92538, -17.8666, 3.04077}, {3.28199, -15.8314,
5.24092}, {3.15851, -13.1805, 6.90425}, {2.35217, -10.5003,
7.68509}, {1.24454, -7.89516, 7.13403}, {0.549512, -6.23831,
4.86797}, {0.0695199, -6.49549, 2.32939}, {-0.844747, -9.27432,
0.410677}, {-1.14876, -12.1662, -1.28437}, {0.75335, -12.9055,
-2.83511}, {3.00653, -13.2714, -3.66546}, {5.12488, -15.6312,
-3.79284}, {5.29668, -17.4011, -3.40139}, {4.31384, -18.8752,
-2.40893}}, {{7.97877, -17.5406, -0.962747}, {5.78823, -18.0872,
0.727781}, {5.65563, -16.4905, 3.22443}, {6.02859, -13.8802,
4.78537}, {5.99141, -10.9815, 5.50792}, {4.7517, -8.13703,
5.72466}, {3.00312, -6.11359, 5.4768}, {1.54494, -4.25373,
3.05997}, {1.42135, -4.50181,
0.119388}, {1.48852, -6.3142, -1.59956}, {1.70863, -9.19318,
-2.54694}, {2.85572, -11.546, -3.48069}, {5.37414, -12.7234,
-4.30245}, {8.23695, -13.906, -3.69932}, {9.64617, -15.933,
-1.60139}, {7.97877, -17.5406, -0.962747}}, {{11.2012, -15.6801,
0.962748}, {8.97528, -16.3203, 1.60139}, {7.92446, -14.0864,
3.69932}, {8.33168, -11.0158, 4.30245}, {8.57125, -8.24611,
3.48069}, {7.10721, -6.07631, 2.54694}, {4.724, -4.44619,
1.59956}, {3.18801, -3.48183, -0.119387}, {2.91137, -3.46482,
-3.05997}, {3.79296, -5.65757, -5.4768}, {4.67103, -8.1836,
-5.72466}, {6.51459, -10.6795, -5.50792}, {9.00629, -12.161,
-4.78537}, {11.4534, -13.1432, -3.22443}, {12.7699, -14.0564,
-0.727781}, {11.2012, -15.6801, 0.962748}}, {{14.1895, -13.1735,
2.40893}, {12.4215, -13.2876, 3.40139}, {10.9745, -12.2539,
3.79284}, {9.99013, -9.23944, 3.66546}, {10.7999, -7.10519,
2.83511}, {11.1106, -5.08825,
1.28437}, {8.45418, -3.90559, -0.410678}, {5.59049, -3.30795,
-2.3294}, {5.12778, -3.59505, -4.86797}, {6.21514, -5.02538,
-7.13403}, {7.91742, -7.28718, -7.68509}, {9.83536, -9.32558,
-6.90425}, {12.0694, -10.758, -5.24092}, {14.0102, -11.4667,
-3.04077}, {15.1891, -12.0797, -0.318843}, {14.1895, -13.1735,
2.40893}}, {{17.0021, -10.4027, 2.69022}, {15.2138, -10.6008,
4.75862}, {13.2866, -9.57274, 5.16344}, {11.9038, -7.7919,
4.04264}, {12.2488, -5.95015, 2.77211}, {12.6464, -3.87895,
0.797978}, {11.7948, -2.32407, -1.65432}, {8.88154, -2.46133,
-3.38205}, {7.95726, -2.94108, -6.24303}, {9.30279, -4.11132,
-8.25942}, {11.3616, -5.69612, -8.67034}, {13.5028, -6.82737,
-7.74435}, {15.1913, -8.09968, -5.71207}, {16.3727, -9.33611,
-2.96241}, {17.3318, -9.75112, -0.187507}, {17.0021, -10.4027,
2.69022}}, {{19.468, -6.31246, 2.02679}, {18.689, -6.39297,
4.70006}, {16.7385, -6.34901, 6.59126}, {13.6336, -6.58546,
5.89892}, {12.6405, -5.60667, 4.13329}, {13.4504, -3.59678,
1.8133}, {13.4832, -1.76188, -0.598634}, {12.3264, -0.51689,
-3.05301}, {10.1417, -1.42822, -5.40309}, {11.0759, -2.37486,
-8.15418}, {13.7203, -3.16293, -8.86713}, {15.8671, -3.81076,
-8.06302}, {17.531, -4.71474, -6.25545}, {18.6902, -5.7627, -3.6003},
{19.3781, -6.2076, -0.806302}, {19.468, -6.31246,
2.02679}}, {{20.7241, -2.6313, 0.958896}, {20.0849, -2.83319,
3.73606}, {18.7952, -2.79434, 6.0844}, {16.7421, -2.63517,
7.69454}, {13.9527, -3.58837, 6.95238}, {12.9562, -3.72589,
4.47214}, {13.7853, -2.23253,
1.90586}, {14.0258, -0.35493, -0.540142}, {13.3619,
1.56645, -2.79237}, {12.5783,
1.66508, -5.51201}, {13.305, -0.122616, -8.10287}, {16.0862,
-0.250681, -8.23515}, {18.1495, -0.232265, -6.96528}, {19.6809,
-0.809185, -4.93326}, {20.6579, -1.6232, -2.17989}, {20.7241, -2.6313,
0.958896}}}
Edit:
The proposed Solution so far (thanks @cvgmt) is the following:
surfacefunc = BSplineFunction[coils, SplineClosed -> {True, True}, SplineDegree -> 3];
plot = ParametricPlot3D[surfacefunc[u, v], {u, 0, 1}, {v, 0, 1}, Boxed -> False, Axes -> False, PlotRange -> Automatic, PlotPoints -> 11];
reg = DiscretizeGraphics[plot , PlotRange -> Automatic];
FindMeshDefects[reg]
reg
is a Region
indeed, but the underlying mesh seems to be ill defined. Is there any way to fix this?
Here are some modifications to ParametricPlot
:
Method -> {"BoundaryOffset" -> False}
Mesh -> None
PlotPoints -> {40, 20}
MaxRecursion -> 1
PlotRange -> All
The first one is important, since it allows the pairs of boundaries, u == 0
, u == 1
and v == 0
, v == 1
, to match up. The Mesh
option is important because it prevents the polygons being broken for the sake of a mesh line. The next two needed tweaking. Some settings resulted in meshes that had problems. Sometimes the problems were fixed with RepairMesh
and sometimes not. The best chance of generating a defect-free mesh is MaxRecursion -> 0
, since the recursive subdivision is not guaranteed to match up on opposite edges; usually RepairMesh
fixes this problem. PlotRange -> All
is safer than Automatic
; I sometimes got small holes from the surface being clipped.
surfacefunc =
BSplineFunction[data, SplineClosed -> {True, True},
SplineDegree -> 3];
plot = ParametricPlot3D[surfacefunc[u, v], {u, 0, 1}, {v, 0, 1},
PlotRange -> All,
PlotPoints -> {40, 20}, (* to get initial grid of approx. squares *)
MaxRecursion -> 1, (* works with 0, 1; 2 requires RepairMesh *)
Method -> {"BoundaryOffset" -> False},
Mesh -> None];
reg = DiscretizeGraphics[plot, PlotRange -> Automatic];
FindMeshDefects[reg]
Correct answer by Michael E2 on December 28, 2020
surfacefunc =
BSplineFunction[data, SplineClosed -> {True, True},
SplineDegree -> 3];
reg = ParametricPlot3D[surfacefunc[u, v], {u, 0, 1}, {v, 0, 1},
Boxed -> False, Axes -> False];
DiscretizeGraphics[reg]
Answered by cvgmt on December 28, 2020
The Indexed
approach produces:
reg = ParametricRegion[
{
Indexed[surfacefunc[θ, φ], 1],
Indexed[surfacefunc[θ, φ], 2],
Indexed[surfacefunc[θ, φ], 3]
},
{{θ, 0, 1}, {φ, 0, 1}}
];
mesh = DiscretizeRegion[reg, PerformanceGoal->"Quality"];
FindMeshDefects[mesh]
Answered by Carl Woll on December 28, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP