It's not that this doesn't make sense, but it just works out awkward 99% of the time.
Often in 2D graphics rectangles are initialized, stored and manipulated as a pair of points. In no particular language,
class Rect: p1, p2: point
It makes more sense to define a rectangle as two x values and two y values, like this:
class Rect xleft, xright: int ytop, ybottom: int
With two points, if at some place in the source code you want to make use of the y value of the top, you'd have to say rect.p1.y (hmmm, stop and think, is it p1 or p2) but with the four values as plain data members, it's clear and direct: rect.ytop (no thinking required!) The use of two points means that in dealing with the vertical, you have to tangle the horizontal; there's an extraneous relation between indepenent elements.
How did this two-point idea come about and why does it persists? Does it have some benefit over bare x and y coordinates?
ADDED NOTE: This question is in the context of X-Y aligned rectangles, such as in windows managers and GUI toolkits, not in the context of arbitrary shapes in drawing and painting app.