Late answer but,you don't need to "weight angle",weighting is a naive mathematical mindset toward this problem since vectors whose both direction and amplitude but we only care about direction.What you really want here is just add up all normal vectors that share the same vertice,the operation ends up merging total directions into one single vector.Things you need to concern is specify which vertice is shared and have calculations done on that particular set before moving to another one,you also don't want to recalculate processed vertices so a indicator buffer is required for marking and skiping processed ones.