Added cddlib-094h from http://www.inf.ethz.ch/personal/fukudak/cdd_home/

Change-Id: I64519509269e434b1b9ea87c3fe0805e711c0ac9
diff --git a/third_party/cddlib/examples-ml/PolytopeSkeleton.m b/third_party/cddlib/examples-ml/PolytopeSkeleton.m
new file mode 100644
index 0000000..5a617d3
--- /dev/null
+++ b/third_party/cddlib/examples-ml/PolytopeSkeleton.m
@@ -0,0 +1,66 @@
+(* 
+   PolytopeSkeleton.m,
+   by Komei Fukuda, fukuda@ifor.math.ethz.ch
+   Version March 3, 1999.
+   -- This Needs View3D package ---
+*)
+
+Visible[ineq_Integer, {a_,b_}, viewpoint_]:=
+	If[N[a[[ineq]].viewpoint] >= N[b[[ineq]]], True, False];
+		
+Visible[{a_,b_}, viewpoint_]:=
+	Map[Visible[#,{a,b},viewpoint]&, Range[Length[b]]];
+		
+VisibleSkeleton[vertices_,ecd_, ead_, {a_, b_},viewpoint_]:=
+	Block[{grtemp, edgelist, i, visibility, viseges, invisedges, visibles,invisibles},
+		edgelist={};
+		Do[	edgelist=Join[edgelist,Map[{i, #}&, ead[[i]]]],
+			{i,1,Length[ead]}
+		];edgelist=Select[edgelist,#[[1]]<#[[2]]&];
+		visibility=Flatten[Position[Visible[{a, b},viewpoint],True]];
+		visedges=Select[edgelist, 
+		(Intersection[visibility,ecd[[#[[1]]]],ecd[[#[[2]]]] ] != {}) &];
+		invisedges=Complement[edgelist,visedges];
+		visibles=(vertices[[#]]&) /@ visedges;
+		invisibles=(vertices[[#]]&) /@ invisedges;
+		grtemp=Join[{Thickness[ 0.0085]},
+			Line /@ visibles, 
+			{Thickness[ 0.0035], Dashing[{0.01,0.012}]}, Line /@ invisibles];
+		grtemp
+	];
+		
+VisibleSkeleton2[vertices_,ecd_, ead_, flist_,{a_, b_},viewpoint_]:=
+	Block[{grtemp, edgelist, i, edgelist0, visibility, viseges, invisedges, visibles,invisibles},
+		edgelist0={};
+		Do[	edgelist0=Join[edgelist0,Map[{i, #}&, ead[[i]]]],
+			{i,1,Length[ead]}
+		];edgelist0=Select[edgelist0,#[[1]]<#[[2]]&];
+		edgelist=Select[edgelist0,(Intersection[ecd[[#[[1]]]],ecd[[#[[2]]]],flist] != {})&]; 
+		visibility=Flatten[Position[Visible[{a, b},viewpoint],True]];
+		visedges=Select[edgelist, 
+		(Intersection[visibility,ecd[[#[[1]]]],ecd[[#[[2]]]] ] != {}) &];
+		invisedges=Complement[edgelist,visedges];
+		visibles=(vertices[[#]]&) /@ visedges;
+		invisibles=(vertices[[#]]&) /@ invisedges;
+		grtemp=Join[{Thickness[ 0.0085]},
+			Line /@ visibles, 
+			{Thickness[ 0.0035], Dashing[{0.01,0.012}]}, Line /@ invisibles];
+		grtemp
+	];
+
+getMmaViewPoint[vp_,gr_]:=
+	ViewPointFromUser[vp,
+		FullOptions[gr,PlotRange],
+		FullOptions[gr,BoxRatios]
+	];
+
+getUserViewPoint[vp_,gr_]:=
+	ViewPointToUser[vp,
+		FullOptions[gr,PlotRange],
+		FullOptions[gr,BoxRatios]
+	];
+	
+circle[alpha_, r_:2, h_:2]:=
+	{r*Cos[alpha], r*Sin[alpha], h}
+
+(* end of PolytopeSkeleton.m *)
\ No newline at end of file