import numpy as np
tile_size = 10
screen_size = (800, 600)
T_X = tile_size/2 * np.array([ 3**.5, -1, -1/(2**.5)])
T_Y = tile_size/2 * np.array([-3**.5, -1, -1/(2**.5)])
T_Z = tile_size/2 * np.array([0, 2, -1/(2**.5)])
T_T = [screen_size[0]/2, screen_size[1]/2, 0]
transform_matrix = np.array([T_X, T_Y, T_Z, T_T]).transpose()
x_3d = 10
y_3d = 20
z_3d = 5
result = transform_matrix.dot([x_3d, y_3d, z_3d, 1])