问题
I am doing some operations with vectors and physics in PyGame and the default coordinate system is inconvenient for me. Normally the (0, 0)
point is at the top-left corner, but I would rather that the origin were at the bottom-left corner. I would rather change the coordinate system than converting every single thing I have to draw.
Is it possible to change the coordinate system in PyGame to make it work like this?
回答1:
Unfortunately, pygame does not provide any such functionality. The simplest way to do it would be to have a function to convert coordinates, and use it just before drawing any object.
def to_pygame(coords, height):
"""Convert coordinates into pygame coordinates (lower-left => top left)."""
return (coords[0], height - coords[1])
This will take your coordinates and convert them into pygame's coordinates for drawing, given height
, the height of the window, and coords
, the top left corner of an object.
To instead use the bottom left corner of the object, you can take the above formula, and subtract the object's height:
def to_pygame(coords, height, obj_height):
"""Convert an object's coords into pygame coordinates (lower-left of object => top left in pygame coords)."""
return (coords[0], height - coords[1] - obj_height)
来源:https://stackoverflow.com/questions/10167329/change-the-position-of-the-origin-in-pygame-coordinate-system