# Return to Answer

 2 added 96 characters in body edited Oct 13 '17 at 16:55 george2079 36.3k11 gold badge3636 silver badges9494 bronze badges Here is a way to do this in 2d. Essentially you complement the convex hull with a new convex hull including the extra point: SeedRandom p = RandomReal[{-1, 1}, {10, 2}]; hullpts = ConvexHullMesh[p]["VertexCoordinates"]; hulledges = ConvexHullMesh[p]["Edges"]; pref = {-1., 0.}; g1 = Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges}] compute a new convex hull including the reference point: new = ConvexHullMesh[Join[hullpts, {pref}]]; Show[{new, g1}] find vertices on original hull that have been eliminated (*find vertices on original hull that have been eliminated*) dropped = Union@Flatten[Position[hullpts, #] & /@ Complement[hullpts, new["VertexCoordinates"]]]; (*find the end points *)  find the end points posref = Position[new["VertexCoordinates"], pref][[1, 1]]; endpoints = Position[hullpts, #][[1, 1]] & /@ (new["VertexCoordinates"][[#]] & /@ DeleteCases[Union[Flatten[Select[new["Edges"] , MemberQ[#, posref] &]]] , posref]); seepoints = Join[ dropped , endpoints ];  find the edges connecting the found points: seeedges = Select[ hulledges , MemberQ[seepoints, #[]] && MemberQ[seepoints, #[]] & ]; Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges, {Thick, Red, Line[hullpts[[#]]] & /@ seeedges}}] the extension to 3d should be straightforward. Here is a way to do this in 2d. Essentially you complement the convex hull with a new convex hull including the extra point: SeedRandom p = RandomReal[{-1, 1}, {10, 2}]; hullpts = ConvexHullMesh[p]["VertexCoordinates"]; hulledges = ConvexHullMesh[p]["Edges"]; pref = {-1., 0.}; g1 = Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges}] new = ConvexHullMesh[Join[hullpts, {pref}]]; Show[{new, g1}] (*find vertices on original hull that have been eliminated*) dropped = Union@Flatten[Position[hullpts, #] & /@ Complement[hullpts, new["VertexCoordinates"]]]; (*find the end points *) posref = Position[new["VertexCoordinates"], pref][[1, 1]]; endpoints = Position[hullpts, #][[1, 1]] & /@ (new["VertexCoordinates"][[#]] & /@ DeleteCases[Union[Flatten[Select[new["Edges"] , MemberQ[#, posref] &]]] , posref]); seepoints = Join[ dropped , endpoints ]; seeedges = Select[ hulledges , MemberQ[seepoints, #[]] && MemberQ[seepoints, #[]] & ]; Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges, {Thick, Red, Line[hullpts[[#]]] & /@ seeedges}}] the extension to 3d should be straightforward. Here is a way to do this in 2d. Essentially you complement the convex hull with a new convex hull including the extra point: SeedRandom p = RandomReal[{-1, 1}, {10, 2}]; hullpts = ConvexHullMesh[p]["VertexCoordinates"]; hulledges = ConvexHullMesh[p]["Edges"]; pref = {-1., 0.}; g1 = Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges}] compute a new convex hull including the reference point: new = ConvexHullMesh[Join[hullpts, {pref}]]; Show[{new, g1}] find vertices on original hull that have been eliminated dropped = Union@Flatten[Position[hullpts, #] & /@ Complement[hullpts, new["VertexCoordinates"]]];  find the end points posref = Position[new["VertexCoordinates"], pref][[1, 1]]; endpoints = Position[hullpts, #][[1, 1]] & /@ (new["VertexCoordinates"][[#]] & /@ DeleteCases[Union[Flatten[Select[new["Edges"] , MemberQ[#, posref] &]]] , posref]); seepoints = Join[ dropped , endpoints ];  find the edges connecting the found points: seeedges = Select[ hulledges , MemberQ[seepoints, #[]] && MemberQ[seepoints, #[]] & ]; Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges, {Thick, Red, Line[hullpts[[#]]] & /@ seeedges}}] the extension to 3d should be straightforward. 1 answered Oct 13 '17 at 16:49 george2079 36.3k11 gold badge3636 silver badges9494 bronze badges Here is a way to do this in 2d. Essentially you complement the convex hull with a new convex hull including the extra point: SeedRandom p = RandomReal[{-1, 1}, {10, 2}]; hullpts = ConvexHullMesh[p]["VertexCoordinates"]; hulledges = ConvexHullMesh[p]["Edges"]; pref = {-1., 0.}; g1 = Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges}] new = ConvexHullMesh[Join[hullpts, {pref}]]; Show[{new, g1}] (*find vertices on original hull that have been eliminated*) dropped = Union@Flatten[Position[hullpts, #] & /@ Complement[hullpts, new["VertexCoordinates"]]]; (*find the end points *) posref = Position[new["VertexCoordinates"], pref][[1, 1]]; endpoints = Position[hullpts, #][[1, 1]] & /@ (new["VertexCoordinates"][[#]] & /@ DeleteCases[Union[Flatten[Select[new["Edges"] , MemberQ[#, posref] &]]] , posref]); seepoints = Join[ dropped , endpoints ]; seeedges = Select[ hulledges , MemberQ[seepoints, #[]] && MemberQ[seepoints, #[]] & ]; Graphics[{Point@p, {Red, Point[pref]}, Line[hullpts[[#]]] & /@ hulledges, {Thick, Red, Line[hullpts[[#]]] & /@ seeedges}}] the extension to 3d should be straightforward.