Skip to main content
GameDev.net gamedev.net
🔒 Locked 🎮 Unity

[Python / pyGame] Rotate image towards mouse pointer

Started by viper34j Oct 8, 2010 at 3:17 PM 2 replies 10.1k views
Original Post
viper34j
viper34j
Oh great internetmenz, I need your help. My decade old math skills are failing me.

I'm attempting to rotate an image towards a point using pygame. The point is the mouse cursor in this case. Here is an example of my issue (this is only a snippet):


src_image, rect = pygame.image.load('c:\\testimage.png')
screen = pygame.display.get_surface()

# Example values
player_angle = 0
player_position = (100,100)

# Get the mouse point (Something between (0,0) and (1024,800)).
mouse_point = pygame.mouse.get_pos()

# Set the old_center for repositioning after the rotate.
old_center = self.rect.center

# *** Heres my problem, how do I determine what the angle is from the player_angle
# to the mouse_point with only these three peices of information.
angle_to_mouse = ??

image = pygame.transform.rotate(self.src_image, angle_to_mouse)
rect = image.get_rect()
rect.center = old_center




How do I determine the angle from the center point of the player_point to the mouse_point?

Thanks!
unbird
unbird
Never used pygame, but what you are looking for is calculating an angle given a difference vector, in your case player_position - mouse_point. This will give you a (relative) x and y which you feed to atan2. Search the python math lib for this function, I bet it exists. This will give you the angle in radians which you can then feed to the rotate function (angle_to_mouse). Don't know what coordinate system you are using (left/right-handed), so probably you will have to negate y prior to the atan2 call (or negate angle_to_mouse).
Esys
Esys
angle_to_pointer = math.degrees(math.atan2(objectY-mouseY, objectX-mouseX))+180
viper34j
viper34j
Thanks guys, that helped out a lot.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.