My arrows are opengl lines only currently. To answer your first question, suppose I am viewing at four cars from a distance 'd' where all four cars appear to be of actual size. Now if I move away from those cars, in real world, the cars would appear small sized. And if I move near to them they would appear much bigger, or in some case, some part of car would be out of my vision if I go more closer. I don't want this effect with the arrows. I want the arrows to look of same size, irrelevant of the distance of camera. So, it is quite obvious that as the camera moves away from arrows, the arrows must be scaled with large value to get the same size, and the arrows must be scaled with small value as the camera moves towards the arrow.