Где я могу найти исходный код pygame.math.Vector2? - PullRequest
0 голосов
/ 28 марта 2019

Я написал игру с Pygame на моем Raspberry Pi. Затем вычисления, которые он должен был выполнять для каждого кадра, значительно снизили частоту кадров (5 кадров в секунду вместо запланированных 60 кадров в секунду). У меня есть более сильный компьютер, на котором я хочу попробовать его запустить, но нет версии pygame, которая включает pygame.math, которую я могу установить в операционной системе (Mac OS X 10.7.1). Все, что мне нужно, это 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)

Однако это не сработало и вызывало ошибки, когда вектор использовался в математических операциях и когда была назначена точка прямоугольника, равная вектору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...