#!/usr/bin/python
import numpy as np

from mayavi import mlab

a=2
fi=60
v=a/2.0*np.tan(np.radians(fi))

X=np.array([0,a,a,0,a/2.0])
Y=np.array([0,0,a,a,a/2.0])
Z=np.array([0,0,0,0,v])

#tocke = np.column_stack((X,Y,Z))

mlab.figure(figure=None, bgcolor=None, fgcolor=None, engine=None, size=(800, 600))

mlab.points3d([a/2.0],[a/2.0],[0], color=(1,0,1), resolution=15, scale_factor=0.03)

mlab.triangular_mesh(X, Y, Z, [(0,1,2), (0,2,3), (0,1,4), (1,2,4), (2,3,4), (3,0,4)], opacity=0.5,color=(1,1,0))

#bridovi piramide
for i in xrange(4):
	j=(i+1)%4
	mlab.plot3d( np.array([X[i], X[4]]), np.array([Y[i], Y[4]]), np.array([Z[i], Z[4]]), tube_sides=8, tube_radius=0.01, color=(0,1,1) )
	mlab.plot3d( np.array([X[i], X[j]]), np.array([Y[i], Y[j]]), np.array([Z[i], Z[j]]), tube_sides=8, tube_radius=0.01, color=(0,1,1) )

#dijagonale baze i visina
mlab.plot3d( np.array([X[0], X[2]]), np.array([Y[0], Y[2]]), np.array([Z[0], Z[2]]), tube_sides=8, tube_radius=0.005, color=(1,0,1) )
mlab.plot3d( np.array([X[1], X[3]]), np.array([Y[1], Y[3]]), np.array([Z[1], Z[3]]), tube_sides=8, tube_radius=0.005, color=(1,0,1) )
mlab.plot3d( [a/2.0,a/2.0], [a/2.0,a/2.0], [0,v], tube_sides=8, tube_radius=0.005, color=(1,0,1) )

#presjek
Xp=np.array([a,0,a/4.0,3/4.0*a])
Yp=np.array([a/2.0,a/2.0,a/4.0,a/4.0])
Zp=np.array([0,0,v/2.0,v/2.0])
for i in xrange(4):
	j=(i+1)%4
	mlab.plot3d( np.array([Xp[i], Xp[j]]), np.array([Yp[i], Yp[j]]), np.array([Zp[i], Zp[j]]), tube_sides=8, tube_radius=0.01, color=(1,0,0) )

mlab.triangular_mesh(Xp, Yp, Zp, [(0,1,2), (2,3,0)], opacity=0.7,color=(0,1,0))

mlab.show()