Holy cow, I wrote a book!
Via the Suggestion Box,
Dirk Declercq asks
why the default client-area coordinate origin is at the upper left
corner instead of the lower left corner.
(I assume he also intends for the proposed client-area coordinate system
to have the y-coordinate increasing as you move towards the top
of the screen.)
Well, putting the client area origin at the lower left would have
resulted in the client coordinate space not being a simple translation
of the screen coordinate space.
After all, the screen origin is at the upper left, too.
Windows was originally developed on left-to-right systems,
where the relationship between client coordinates and screen coordinates
was a simple translation.
Having the y-coordinate increase as you move down the screen
but move up the client would have just been one of those things you did
to be annoying.
Okay, so why not place the screen origin at the lower left, too?
Actually, OS/2 does this, and DIBs do it as well.
And then everybody wonders why their images are upside-down.
Turns out that the people who designed early personal computers didn't care
much for mathematical theory.
The raster gun of a television set starts at the upper left corner,
continues to the right, and when it reaches the right-hand edge of the
screen, it jumps back to the left edge of the screen to render the
second scan line.
Why did television sets scan from the top down instead of from
the bottom up?
You'll have to ask the person who invented the television
depending on whom you ask,
or some other nationality entirely),
or more specifically, whoever invented the scanning model of image
why they started from the top rather than from the bottom.
Anyway, given that the video hardware worked from top to bottom,
it was only natural that the memory for the video hardware work
the same way.
(The Apple II famously uses a peculiar memory layout
in order to save a chip.)
Who knows, maybe if the design of early computers had been Chinese,
we would be wondering why the origin was in the upper right corner
with the pixels in column-major order.
Even mathematicians can't get their story straight.
Matrices are typically written with the origin element at the upper left.
Which reminds me of a story from the old Windows 95 days.
The GDI folks received a defect report from the user interface team,
who backed up their report with a complicated mathematical
The GDI team accepted the change request with the remark,
"We ain't much fer book lernin."