gpt4 book ai didi

python - Python/Pygame 中的矩形旋转

转载 作者:太空宇宙 更新时间:2023-11-03 19:23:36 25 4
gpt4 key购买 nike

嘿,我正在尝试绕其中心旋转一个矩形,当我尝试旋转该矩形时,它同时向上和向左移动。有人对如何解决这个问题有任何想法吗?

def rotatePoint(self, angle, point, origin):
sinT = sin(radians(angle))
cosT = cos(radians(angle))
return (origin[0] + (cosT * (point[0] - origin[0]) - sinT * (point[1] - origin[1])),
origin[1] + (sinT * (point[0] - origin[0]) + cosT * (point[1] - origin[1])))

def rotateRect(self, degrees):
center = (self.collideRect.centerx, self.collideRect.centery)
self.collideRect.topleft = self.rotatePoint(degrees, self.collideRect.topleft, center)
self.collideRect.topright = self.rotatePoint(degrees, self.collideRect.topright, center)
self.collideRect.bottomleft = self.rotatePoint(degrees, self.collideRect.bottomleft, center)
self.collideRect.bottomright = self.rotatePoint(degrees, self.collideRect.bottomright, center)

最佳答案

旋转代码看起来不错 - 但是,您知道 pygame 的内部结构不适用于旋转的矩形,是吗?

除非您自己编写了一些带有新矩形角的代码,否则它的作用是定义一个新矩形,其边平行于 Surface 边缘,原始矩形在旋转时可以内切到其中,而不是与原始尺寸相同但倾斜角度的矩形。旋转后向其传递“self.collideRect”对象的任何 Pygame 函数都会执行以下操作:将矩形视为与表面对齐,就像它是用现在的角创建的一样。

如果您的代码要求您在旋转的矩形内检查内容,甚至绘制内容,则必须按照旋转之前的方式执行所有计算,并且只需在显示内容时执行坐标旋转想。也就是说,您使用全局坐标变换,该变换应用于渲染的最后一步。

关于python - Python/Pygame 中的矩形旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com