3 deleted 9 characters in body edited Jul 20 '16 at 6:14 kirma 10.6k11 gold badge3333 silver badges6262 bronze badges Somewhat unintelligentdumb method (for instance, every line has both two Disks and a StadiumShape overlapping), but it's not at least very complicated: hulls0 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 1, 2}]; hulls1 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 2, 2}]; hulls2 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 3, 2}]; hulls = Flatten@{hulls0, hulls1, hulls2}; With[ {r = 1}, BoundaryDiscretizeRegion[RegionUnion@@ (RegionUnion@@ (MeshPrimitives[#, 0 | 1 | 2] /. {Point[pt_] :> Disk[pt, r], Line[line_] :> StadiumShape[line, r]}) & /@ hulls)]]  Somewhat unintelligent method (for instance, every line has both two Disks and a StadiumShape overlapping), but it's not at least very complicated: hulls0 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 1, 2}]; hulls1 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 2, 2}]; hulls2 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 3, 2}]; hulls = Flatten@{hulls0, hulls1, hulls2}; With[ {r = 1}, BoundaryDiscretizeRegion[RegionUnion@@ (RegionUnion@@ (MeshPrimitives[#, 0 | 1 | 2] /. {Point[pt_] :> Disk[pt, r], Line[line_] :> StadiumShape[line, r]}) & /@ hulls)]]  Somewhat dumb method (for instance, every line has both two Disks and a StadiumShape overlapping), but it's not at least very complicated: hulls0 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 1, 2}]; hulls1 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 2, 2}]; hulls2 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 3, 2}]; hulls = Flatten@{hulls0, hulls1, hulls2}; With[ {r = 1}, BoundaryDiscretizeRegion[RegionUnion@@ (RegionUnion@@ (MeshPrimitives[#, 0 | 1 | 2] /. {Point[pt_] :> Disk[pt, r], Line[line_] :> StadiumShape[line, r]}) & /@ hulls)]]  2 deleted 40 characters in body edited Jul 20 '16 at 6:07 kirma 10.6k11 gold badge3333 silver badges6262 bronze badges Somewhat unintelligent method (for instance, every line has both two Disks and a StadiumShape overlapping), but it's not at least very complicated: hulls0 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 1, 2}]; hulls1 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 2, 2}]; hulls2 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 3, 2}]; hulls = Flatten@{hulls0, hulls1, hulls2}; BoundaryDiscretizeRegion[RegionUnion@@ With[ {r = 1}, BoundaryDiscretizeRegion[RegionUnion@@ RegionUnion@@Flatten[ (RegionUnion@@ { (MeshPrimitives[#, 0]0 | 1 | 2] /. {Point[pt_] :> Disk[pt, r], MeshPrimitives[#, 1] /. Line[line_] :> StadiumShape[line, r], MeshPrimitives[#, 2]}]) & /@ hulls]]hulls)]]  Somewhat unintelligent method (for instance, every line has both two Disks and a StadiumShape overlapping), but it's not at least very complicated: hulls0 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 1, 2}]; hulls1 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 2, 2}]; hulls2 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 3, 2}]; hulls = Flatten@{hulls0, hulls1, hulls2}; BoundaryDiscretizeRegion[RegionUnion@@ With[ {r = 1}, RegionUnion@@Flatten[ {MeshPrimitives[#, 0] /. Point[pt_] :> Disk[pt, r], MeshPrimitives[#, 1] /. Line[line_] :> StadiumShape[line, r], MeshPrimitives[#, 2]}] & /@ hulls]]  Somewhat unintelligent method (for instance, every line has both two Disks and a StadiumShape overlapping), but it's not at least very complicated: hulls0 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 1, 2}]; hulls1 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 2, 2}]; hulls2 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 3, 2}]; hulls = Flatten@{hulls0, hulls1, hulls2}; With[ {r = 1}, BoundaryDiscretizeRegion[RegionUnion@@ (RegionUnion@@ (MeshPrimitives[#, 0 | 1 | 2] /. {Point[pt_] :> Disk[pt, r], Line[line_] :> StadiumShape[line, r]}) & /@ hulls)]]  1 answered Jul 20 '16 at 5:56 kirma 10.6k11 gold badge3333 silver badges6262 bronze badges Somewhat unintelligent method (for instance, every line has both two Disks and a StadiumShape overlapping), but it's not at least very complicated: hulls0 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 1, 2}]; hulls1 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 2, 2}]; hulls2 = ConvexHullMesh /@ RandomReal[{-10, 10}, {3, 3, 2}]; hulls = Flatten@{hulls0, hulls1, hulls2}; BoundaryDiscretizeRegion[RegionUnion@@ With[ {r = 1}, RegionUnion@@Flatten[ {MeshPrimitives[#, 0] /. Point[pt_] :> Disk[pt, r], MeshPrimitives[#, 1] /. Line[line_] :> StadiumShape[line, r], MeshPrimitives[#, 2]}] & /@ hulls]]