Aug-25-2021, 06:44 PM
(This post was last modified: Aug-25-2021, 06:44 PM by deanhystad.)
I am confused. I write a response that shows how to do the math and you ask for 4 lines of pygame code. I provide a solution that easily accomplishes what you want using 4 lines of pygame code and you want to do math. Make up your mind please.
Here is one last tkinter example showing how a rotating image can do what you originally requested. I already wrote it so I'm not throwing it away.
Here is one last tkinter example showing how a rotating image can do what you originally requested. I already wrote it so I'm not throwing it away.
from PIL import Image, ImageDraw, ImageTk import tkinter as tk angle = 0 image = None tkimage = None sail = None def rotate_sail(delta): global angle, tkimage, sail angle += delta # Create rotated image from original image tkimage = ImageTk.PhotoImage(image.rotate(angle)) if sail: canvas.delete(sail) sail = canvas.create_image(75, 75, anchor=tk.CENTER, image=tkimage) canvas.after(10, rotate_sail, delta) # Make an image of sail and mast image = Image.new(mode='RGBA', size=(100, 100), color=0) draw = ImageDraw.Draw(image) draw.ellipse((45, 45, 55, 55), fill='black') draw.line((50, 50, 100, 50), width=5, fill='white') root = tk.Tk() canvas = tk.Canvas(root, width=150, height=150, bg='blue') canvas.pack() canvas.create_rectangle(55, 50, 95, 100, fill='brown') rotate_sail(-1) root.mainloop()PIL likes angles in degrees. Surprised it wasn't something else like revolutions. Your last example is still using degrees with the math library. You need to use radians. You should also use center when you position the image. It is much easier than trying to position the corner. Remember that rotating the image/surface changes the size, and this changes the location of the corner relative to the center of the image.