added functions to generate normals for a mesh... they mostly work, but i dunno if there is a problem with it