Pues mira, el algorítmo más sencillo para transformar una entidad 3D en su proyección sobre un plano a una distancia OBS del observador, el cual está situado en una posición definida por DX,DY,DZ, es el siguiente.
Código:
Public Sub rotacion(dX As Double, dY As Double, dz As Double, _
gx As Double, gy As Double, gz As Double, _
xt As Double, yt As Double, zt As Double, _
Xs As Double, Ys As Double, Obs As Double)
Dim i As Long, radians As Double
Dim XR As Double, YR As Double, Zr As Double
Dim x As Double, y As Double, z As Double
Dim x1 As Double, y1 As Double, Z1 As Double
Dim gxx As Double, gyy As Double, gzz As Double
On Local Error Resume Next
radians = (3.141592654 / 180)
'Transformar angulares
gxx = gx * radians
gyy = gy * radians
gzz = gz * radians
'Disponer en temporales
XR = xt - xmedia + dX
YR = yt - ymedia + dY
Zr = zt - zmedia + dz
'----[primera rotación]
x1 = -Cos(gzz) * XR - Sin(gzz) * Zr
Z1 = -Sin(gzz) * XR + Cos(gzz) * Zr
x = Cos(gyy) * x1 + Sin(gyy) * YR
y1 = Cos(gyy) * YR - Sin(gyy) * x1
z = Cos(gxx) * Z1 - Sin(gxx) * y1
y = Cos(gxx) * Z1 - Sin(gxx) * y1
Xs = -Obs * x '/ ((Z - zmedia))
Ys = -Obs * y '/ ((Z - zmedia))
End Sub
donde gxx, gyy y gzz representan el giro rotacional de los tres ejes posibles:
X: de izquierda a derecha
Z: profundidad de la escena
Y: altura de la escena
Estas direcciones tenidas siempre en cuenta que las rotaciones corresponde a '0' grados.
De todas formas -insisto- será muy complicado que puedas materializar con excel una gráfico en 3D, porque necesitarás que el usuario interactúe con él para realizar los giros, desplazamientos y cambios de la focal del observador; además, este es el proceso más sencillo que se me ocurre, otros algorítmos son mucho más complejos de implementar.
PD: Xt, Yt y Zt corresponden a los valores que de cada iteración calculada por la función que representas, se transforman en unas coordenadas XS e YS que son las proyectadas sobre el 'telón' de auerdo a las rotaciones de los ejes, el punto de vista del observador y la focal deseada.