5.10 3d surface plotting from data points (14.5.02)

5.10.1 Darrell Barabash (15.5.00)
5.10.2 Robert Israel (15.5.02)
5.10.3 Dr. TANAKA, Kazuo (16.5.02)

5.10.1 Darrell Barabash (15.5.00)

After many attempts with Maple 6 over the last couple days, I give up. I have some numeric data which I want to plot as a 3D surface. Ideally, I would like to plot it as contours. The problem is that I can only get 3D point plots to work and have been unable to figure out how to get it to display as a surface. The data is a list of [x,y,z] points where x and y are the independent variables.

data := [[50.7385, .8424, 17.76], [60.1174, 7.2830, 17.96], 
         [61.4359, -2.9078, 17.65], [54.5203, -9.5282, 16.17], 
         [46.5648, -8.8578, 17.68], [41.7216, -3.8881, 17.46], 
         [40.8820, 2.5928, 16.98], [44.3202, 8.6542, 17.04], 
         [51.9302, 11.2453, 17.61], [59.8513, 6.7143, 16.29], 
         [70.7850, 14.2986, 17.74], [70.6260, 14.5001, 17.42], 
         [62.0037, 20.7985, 17.23], [52.7317, 22.0789, 16.38], 
         [45.2121, 19.9142, 17.05], [39.5056, 15.7564, 16.74], 
         [35.9793, 10.8419, 16.69], [34.0844, 5.6868, 16.95], 
         [33.5315, .5582, 17.19], [34.2978, -4.4322, 14.59], 
         [36.2701, -9.2649, 13.52], [39.5079, -13.6210, 17.81], 
         [44.2834, -17.3221, 17.53], [50.7196, -19.7107, 17.29], 
         [58.8775, -19.7284, 17.37], [67.6327, -15.8741, 17.35], 
         [74.6338, -7.3103, 17.44], [76.3174, 4.6175, 17.49], 
         [80.6759, -25.1588, 17.17], [29.2350, 11.9718, 16.26], 
         [31.0006, 16.4310, 15.96], [71.2992, 32.7692, 16.88]]
 

I have tried the pointplot3d function as well as "surfdata" (which I am, no doubt, using incorrectly). In all cases the best that I can do is get a scattergram of 3D points.

5.10.2 Robert Israel (15.5.02)

"surfdata" would be the function to use if your data were organized in rows and columns. This doesn’t seem to be the case. However, looking at the projection on the xy plane it seems that you have points 2 to 10 in a closed curve surrounding point 1, points 11 to 28 in a closed curve around that in the opposite direction, and then points 29 to 32 outside that, with point 29 near 26, 30 and 31 near 17, and 32 near 13. So I might do it this way:

 L1:= [data[1]$19]:L2:= [seq(data[12-i]$2,i=2..10),data[10]]: 
 L3:= [seq(data[i],i=11..28),data[11]]: 
 u3:= [FAIL$3]: 
 L4:= [u3$2,data[32],u3$2,data[31],data[30],u3$8,data[29],u3$3]:
 

5.10.3 Dr. TANAKA, Kazuo (16.5.02)

or polygonplot3d with style=patch and after drawing the figure select "Patch and Contour" from task bar "style".

 with(plots): 
 polygonplot3d([[50.7385, .8424, 17.76], [60.1174, 7.2830, 17.96], 
[61.4359, -2.9078, 17.65], [54.5203, -9.5282, 16.17], [46.5648, -8.8578, 
17.68], [41.7216, -3.8881, 17.46], [40.8820, 2.5928, 16.98], [44.3202, 
8.6542, 17.04], [51.9302, 11.2453, 17.61], [59.8513, 6.7143, 16.29], 
[70.7850, 14.2986, 17.74], [70.6260, 14.5001, 17.42], [62.0037, 20.7985, 
17.23], [52.7317, 22.0789, 16.38], [45.2121, 19.9142, 17.05], [39.5056, 
15.7564, 16.74], [35.9793, 10.8419, 16.69], [34.0844, 5.6868, 16.95], 
[33.5315, .5582, 17.19], [34.2978, -4.4322, 14.59], [36.2701, -9.2649, 
13.52], [39.5079, -13.6210, 17.81], [44.2834, -17.3221, 17.53], [50.7196, 
-19.7107, 17.29], [58.8775, -19.7284, 17.37], [67.6327, -15.8741, 17.35], 
[74.6338, -7.3103, 17.44], [76.3174, 4.6175, 17.49], [80.6759, -25.1588, 
17.17], [29.2350, 11.9718, 16.26], [31.0006, 16.4310, 15.96], [71.2992, 
32.7692, 16.88]],axes=boxed,style=contour);