Python и Pygame: Столкновение мяча с внутренней частью круга

Я создаю игру, в которой шары отскакивают от внутри гораздо большего круга. Большой круг не двигается.

Вот код, который я m, которые в настоящее время используются для этих столкновений:

def collideCircle(circle, ball):
    """Check for collision between a ball and a circle"""
    dx = circle.x - ball.x
    dy = circle.y - ball.y

    distance = math.hypot(dx, dy)

    if distance >= circle.size + ball.size:
        # We don't need to change anything about the circle, just the ball
        tangent = math.atan2(dy, dx)
        ball.angle = 2 * tangent - ball.angle
        ball.speed *= elasticity + 0.251

        angle = 0.5 * math.pi + tangent
        ball.x -= math.sin(angle)
        ball.y += math.cos(angle)

Он основан на замечательном учебнике Питера Коллингриджа здесь .

Круг и шар являются классами с (x, y), радиусом, угол и скорость.

Однако у меня есть две проблемы с этим методом:

  1. Мяч отскакивает от (я подозреваю) своей «точки привязки», которая, кажется, находится в правом верхнем углу круга.
  2. При столкновении с нижними 5% круга он не может отскочить достаточно высоко и, следовательно, «вылетает» за пределы экрана. Я предполагаю, что это происходит потому, что сильный удар не достаточно высоко, чтобы переместить мяч выше его (неправильно помещенная) «точки привязки»?

Рассмотрев возможные решения уже здесь, в частности «обнаружение столкновений быстрого круга» [ссылка удалена из-за лимита ссылок на спам], что, Некоторые красные тексты указывают на недостающие файлы из исходных кодов проекта. Как этого избежать?

Когда я перемещаю каталог проекта iphone на новый путь. Некоторые красные тексты указывают на недостающие файлы из исходных кодов проекта.

Обеспечивает ли Windows Forms DataGridView значительную производительность по сравнению с WPF DataGrid для больших объемов данных?

Если бы мне пришлось использовать WPF, я бы предпочел использовать .Net 3.5S SP1, если только DataGrid в .Net 4 не является значительно лучше?

Также я хочу использовать ADO с DataTable, который, как мне кажется, лучше подходит для Windows Forms ..

14
задан markmnl 6 January 2011 в 09:23
поделиться