# 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. – ErnieDingo Feb 27 '18 at 20:46
• There it is with the screenshots – Mntfr Feb 28 '18 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. – Kyy13 Feb 28 '18 at 16:43

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

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