Одна вещь опасаться состоит в том, как выйти из Универсального.ForEach метода - см. это обсуждение . Хотя в ссылке, кажется, говорится, что этот путь самый быстрый. Не уверенный, почему - Вы думали бы, что они будут эквивалентны когда-то скомпилированные...
Примерно через год решение оказалось действительно простым. Для точки с координатами:
(x1,y1,z1)
Затем, преобразовать эту точку в криволинейный чертеж радиуса R:
dist=sqrt(x1^2 + y1^2 + z1^2)
x= R*(1+x/dist)
y= R*(1+y/dist)
Теперь я могу генерировать свои собственные чертежи (изображение из википедии) :-)
Вам может потребоваться сначала использовать матрицу преобразования для проецирования 3D-объекта на 2D-плоскость. http://en.wikipedia.org/wiki/Graphical_projection , выберите тот, который лучше всего соответствует вашим потребностям.
В качестве второго шага вы затем захотите использовать общие преобразования, чтобы вывести координаты в евклидово пространство. http://en.wikipedia.org/wiki/Curvilinear_coordinates