/// <summary> /// Finds the midpoint between two points on the unit sphere /// </summary> private Vertex CreateMidpoint(Vertex one, Vertex two) { Vector3D midpoint = Vector3DExtensions.Midpoint(ConvertToVector3D(one.Position), ConvertToVector3D(two.Position)); double u = midpoint.Azimuthal() / (2 * Math.PI); double v = midpoint.Polar() / Math.PI; midpoint.Normalize(); return(new Vertex(ConvertToPoint3D(midpoint), midpoint, new Point(u, v))); }