Thanks for answers and good discussion!
My statement that the y-axis direction makes troubles to vector algebra is slighly incorrect -- the algebra does not care about y-axis pointing 'up' or 'down'. It is the interpretation of results of the calculation where it matters. In my case I do game physics, not terribly hard, but having enough forces and torques acting the equations tend to become large. My choice was to have the gravitation force to be 'negative' and to have the contact reaction forces being 'positive', where the negative and positive means the orientation of the force vector with respect to y-axis. So I wanted the physics being normal and chose to cope with the transformations when drawing on the screen. I still think this was the right decision.
I also had the idea that the transformations take place only when rendering to screen but that ended up being not entirely true. It would if the only interaction with the screen co-ordinates would be the drawing. But I sometimes query a screen object rotation angle e.g. to find out the direction where its surface normal points to, and while doing so it is important to remember the different direction of the positive angle. An another example is that in order to interact with Thor particle system particles I need to get their velocities and it is of course returned as a vector in screen co-ordinates. It is obvious that the velocity vector needs a different transformation than the position vector but only after first making a mistake there
.
Also, the scaling of the length unit is another reason to have the different co-ordinates for calculation and rendering. Instead of defining acceleration as pixels/s
2 I opted for more common m/s
2, where one pixel is defined to correspond to a certain length measured in 'meters'. This results all physics in SI-units and it is much easier find good ballpark figures for various quantities because the real world can be used as a reference case.
So the total transformation is scaling, flipping the y-axis and translating the origin to bottom left corner. If the origin and the y-axis direction would have been in place already, only the scaling would have been needed.
The roots of the downward y-axis selection is very well understandable according to CG history and convention. And while this is manageable and only a slightly bugging sometimes, it would not harm if there would be a standard way of handling these to make it easier for newcomers and also easier to write at least a bit less cluttered code.
The ultimate solution would have been if the ancient greeks would have invented Commodore64 before maths so they could have had the downward-y set correctly in their maths too