Тема: из плоскости в полусферу

Всем привет!
Помогите разобраться. Как из плоскости сделать полусферу? Например есть Plane 2х2 клетки размером 100х100. Как этот план выгнуть полусферой, зная радиус? Радиус = 50.

В 3D Max-е есть модификатор spherify который из куба делает сферу, вот мне нужно понять, по какой формуле из прямоугольных координат X,Y преобразовать в сферические координаты? Я пишу скрипт на 3D Max-е, но в упор понять не могу, что там за формула?

Вот например координаты вершин ровного Plane:

1) X: -50.0 Y: -50.0 Z: 50.0
2) X: 0.0 Y: -50.0 Z: 50.0
3) X: 50.0 Y: -50.0 Z: 50.0

4) X: -50.0 Y: 0.0 Z: 50.0
5) X: 0.0 Y: 0.0 Z: 50.0
6) X: 50.0 Y: 0.0 Z: 50.0

7) X: -50.0 Y: 50.0 Z: 50.0
8) X: 0.0 Y: 50.0 Z: 50.0
9) X: 50.0 Y: 50.0 Z: 50.0

7------8------9
|........|........|
|........|........|
4------5------6
|........|........|
|........|........|
1____2____3

так как это плоскость, то Z всегда равен 50

Но вот как поменять координаты, чтобы плоскость изогнулась по сфере с учётом заданного радиуса 50?
Это одна сторона куба, то есть 1/6 куба

Координаты должны стать такими:

1) X: -28.868 Y: -28.868 Z: 28.868
2) X: 0.0 Y: -35.355 Z: 35.355
3) X: 28.868 Y: -28.868 Z: 28.868

4) X: -35.355 Y: 0.0 Z: 35.355
5) X: 0.0 Y: 0.0 Z: 50.0
6) X: 35.355 Y: 0.0 Z: 35.355

7) X: -28.868 Y: 28.868 Z: 28.868
8) X: 0.0 Y: 35.355 Z: 35.355
9) X: 28.868 Y: 28.868 Z: 28.868

вот как? по какой формуле?

Re: из плоскости в полусферу

Как интересно задавать вопросы на форуме и самому же на них отвечать...

maxscript:

obj = $Plane01
convertToMesh obj

for v = 1 to getNumVerts obj do
(
vert = getVert obj v

x = vert.x
y = vert.y
z = vert.z

vec = 1/sqrt(x^2+y^2+z^2)
xn = x * vec
yn = y * vec
zn = z * vec

vert.x = xn * 50
vert.y = yn * 50
vert.z = zn * 50

setVert obj v vert
)
update obj