Used rotation matrices to do the rotations

Completely changed the way we got the arrow head directional vectors. I
used the generalized rotation matrix found on wikipedia. This is giving
amazing results with almost no stability issues. Only one corner case
exists, but is handled well I think.