我在Raspberry Pi上用Pygame编写了一个游戏。然后,它必须在每一帧中执行的计算大大降低了帧速率(5 fps,而不是预期的60 fps)。我有一台性能更强的计算机,希望可以在其上运行,但是没有可以在操作系统(Mac OS X 10.7.1)上安装的pygame版本,其中包含pygame.math。我只需要pygame.math.Vector2,那么在哪里可以找到它的源代码?
下面是我写的一门课。我试图使其行为与pygame.math.Vector2完全一样。
import math
class Vec():
def __init__(self, x, y=None):
if y == None:
x, y = x[0], x[1]
self.x = float(x)
self.y = float(y)
def __iter__(self):
vals = [self.x, self.y]
return iter(vals)
def __add__(self, other):
x = self.x + other.x
y = self.y + other.y
return Vec(x, y)
def __sub__(self, other):
x = self.x - other.x
y = self.y - other.y
return Vec(x, y)
def __mul__(self, other):
if type(other) == type(self):
x = self.x * other.x
y = self.y * other.y
return x + y
else:
x = self.x * other
y = self.y * other
return Vec(x, y)
def rotate(self, angle):
ox, oy = 0, 0
px, py = self.x, self.y
qx = ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy)
qy = oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy)
return Vec(qx, qy)
def angle_to(self, other):
return math.degrees(math.asin((self.x * other.y - self.y * other.x)/(self.length()*other.length())))
def length(self):
return math.sqrt(self.x**2 + self.y**2)
但是,当在数学运算中使用矢量以及将矩形点分配为等于矢量时,它不起作用并引起错误。