I am unsure if this is what you are looking for, but perhaps it will help:
data3D = {{2, 3, 6},
{3, 1, 5},
{4, 5, 15},
{5, 2, 10},
{0, 0, 0}
}
Needs["TetGenLink`"]
Use a convex hull:
{pts, surface} = TetGenConvexHull[data3D];
Graphics3D[GraphicsComplex[pts, Polygon[surface]]]
Write a function that determines the normal of a triangle, which can be applied to pts and surface
normal[xyz_, vertList_] := Block[
{u, v},
u = xyz[[vertList[[2]]]] - xyz[[vertList[[1]]]];
v = xyz[[vertList[[3]]]] - xyz[[vertList[[2]]]];
Cross[u, v]
]
Select only those triangles which have their normals pointing up:
bottomTriangles = Select[surface, (normal[pts, #].{0, 0, 1} > 0) &]
Graphics3D[GraphicsComplex[pts, Polygon[bottomTriangles]],
Axes -> True, BoxRatios -> {1, 1, 2/3}]