Как сделать упаковку кругов в неправильном многоугольникеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать упаковку кругов в неправильном многоугольнике

Сообщение Anonymous »

Я пытался упаковать в многоугольник как можно больше кругов. Найдя эту упаковку контролируемого круга с помощью Python,
я подумал, что было бы полезно изменить функцию checkBorders на ту, которая подходит лучше.
Я попробовал решить эту проблему, используя физику и силы: когда мяч пересекает конец, мы находим нормаль этого края и отскакиваем мяч назад под тем же углом.
Однако мой код, похоже, вообще не работает, может кто-нибудь помочь с этим?
Спасибо!
Это то, что у меня есть на данный момент
def checkBorders(self, ball):
pointy = Point(ball.x, ball.y)
polygon = Polygon(self.POLY)
is_inside = polygon.contains(pointy)

if not is_inside:
min_distance = float('inf')
closest_edge = None
for i in range(len(self.POLY)):
p1, p2 = np.array(self.POLY), np.array(self.POLY[(i + 1) % len(self.POLY)])
edge = p2 - p1
edge_normalized = self._normalize(edge)
ball_to_p1 = np.array(ball.position) - p1 ####
projection = np.dot(ball_to_p1, edge_normalized) * edge_normalized
distance = np.linalg.norm(ball_to_p1 - projection)
if distance < min_distance:
min_distance, closest_edge = distance, (p1, p2)

normal = np.array([closest_edge[1][1] - closest_edge[0][1],
closest_edge[0][0] - closest_edge[1][0]])
normal = self._normalize(normal) # Normalize the edge normal
# Calculate the reflection vector
dot_product = np.dot(ball.velocity, normal)
ball.velocity = ball.velocity - 2 * dot_product * normal
ball.update()


Подробнее здесь: https://stackoverflow.com/questions/787 ... ar-polygon
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как организовать минификацию и упаковку css и js файлов для ускорения сайта?
    Anonymous » » в форуме CSS
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Прекратить упаковку локальных свойств приложения в образ Docker
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Рэй параллелизированная функция периодически не может найти упаковку
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Рэй параллелизированная функция периодически не может найти упаковку
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как включить HTTPS -упаковку на Synology DSM 7?
    Anonymous » » в форуме Php
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»