# Why is the position of this image changing?

I have a python script to simulate a wrench moving, I have calculated it's origins position in x and y as a function of time, the problem is when I try to rotate the image, my code moves the image out of frame.

import pygame, sys
import math

screen = pygame.display.set_mode((700, 400))
white = (255,255,255)

ox = 20
oy = 32
running = True
posX = 100 - ox
posY = 100 - oy

pygame.init()
while running:
event = pygame.event.poll()
if event.type == pygame.QUIT:
running=0
screen.blit(wrench, (posX, posY))
if(pygame.time.get_ticks() <= 20000):
screen.fill(white)
t = pygame.time.get_ticks() / 1000
print(t)
ang = math.degrees((math.pi / 2 * math.cos(math.pi * t)))
posX = 100 + (50 * math.cos(math.pi * t)) - ox
posY = 100 + (20 * math.sin(math.pi * t)) - oy
wrench = pygame.transform.rotate(wrench, ang)
screen.blit(wrench, (posX, posY))
pygame.display.flip()


Does anybody knows why this is happening?

• Can you add a screenshot to visualise the issue. Feb 27, 2018 at 20:46
• There it is with the screenshots Feb 28, 2018 at 15:28
• Actually, re-reading your question, I'm not sure if my answer is what you're looking for. Can you explain what you mean by moving out of frame? Your image seems to show that the wrench is still within the frame... Regardless, updating the image every time it's rotated will create an image that gets more and more distorted every time it rotates, you should rotate and translate the raw image data instead. Feb 28, 2018 at 16:43

wrench = pygame.transform.rotate(wrench, ang);

rotated_wrench = pygame.transform.rotate(wrench, ang);