Here is a modernization of Maxim Rytin's code for generating a spherical Voronoi diagram, as featured in his Wolfram Demonstration:
(* http://mathematica.stackexchange.com/a/10994 *)
arc[center_?VectorQ, {start_?VectorQ, end_?VectorQ}] := Module[{ang, co, r},
ang = VectorAngle[start - center, end - center];
co = Cos[ang/2]; r = EuclideanDistance[center, start];
BSplineCurve[{start, center + r/co Normalize[(start + end)/2 - center], end},
SplineDegree -> 2, SplineKnots -> {0, 0, 0, 1, 1, 1},
SplineWeights -> {1, co, 1}]]
BlockRandom[SeedRandom[0, Method -> "MersenneTwister"]; (* for reproducibility *)
points = {2 π #1, ArcCos[2 #2 - 1]} & @@@ RandomReal[1, {50, 2}];]
sp = Append[Sin[#2] Through[{Cos, Sin}[#1]], Cos[#2]] & @@@ points;
ch = ConvexHullMesh[sp];
verts = MeshCoordinates[ch]; polys = First /@ MeshCells[ch, 2];
voro = Normalize[Cross[verts[[#2]] - verts[[#1]], verts[[#3]] - verts[[#1]]]] & @@@ polys;
edges = arc[{0, 0, 0}, voro[[##]]] & /@
Select[Subsets[Range[Length[polys]], {2}],
Length[Intersection @@ polys[[#]]] >= 2 &];
Graphics3D[{{Opacity[.75], Sphere[]}, {AbsoluteThickness[2], edges},
{Red, Sphere[sp, 0.02]}}, Boxed -> False]
