Назначение всех возможных комбинаций вершин из списка координат и масштабирование его - PullRequest
0 голосов
/ 17 ноября 2018

Я использую «Обработка» для создания сетки размером четыре на четыре с указанной шириной и высотой, как показано ниже. enter image description here Моя конечная цель состоит в том, чтобы иметь возможность проверять, когда пользователь щелкает внутри определенного квадрата. В моем примере ширина и высота будут равны 480 единицам но это в конечном итоге будет расти. Так что я хотел бы делать все по формуле, а не вручную.

Моя первоначальная мысль состояла в том, чтобы получить вершины каждого угла каждого квадрата в сетке, задать для него имя переменной, а затем создать набор условий if, чтобы проверить, щелкает ли пользователь внутри ограниченной области. Вот что у меня есть.

WIDTH = 480
HEIGHT = 480

rows = [WIDTH * 0.0, WIDTH * 0.25, WIDTH * 0.50, WIDTH * 0.75, WIDTH * 1.00]
columns = [HEIGHT * 0.0, HEIGHT * 0.25, HEIGHT * 0.50, HEIGHT * 0.75, HEIGHT * 1.00]
coordinates = [(i, j) for i in rows for j in columns]

# "coordinates" is a list of tuples of all the vertices:
# [(0.0, 0.0), (0.0, 120.0), (0.0, 240.0), (0.0, 360.0), (0.0, 480.0), (120.0, 0.0), (120.0, 120.0), (120.0, 240.0), (120.0, 360.0), (120.0, 480.0), ...]

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

Например, для строки 1, столбца 1 (левый верхний квадрат в сетке) пользователь должен щелкнуть в области меньше (0, 120) and (120, 0), но больше (0,0) and (0,0). Это вершины, которые приписывают верхний левый квадрат в сетке. Я бы сделал это для каждого квадрата.

Я мог бы дать каждой из этих вершин имя переменной. Например, (0, 0) может быть vertex_one, (0, 120) может быть vertex_two и так далее. Я знаю, как перебирать список кортежей, но я не знаю, как назначить их изменяющейся строке с именем vertex_n - где n представляет номер вершины - во время итерации.

Но я прочитал из этой ветки , что, по-видимому, это не очень хорошая идея. Так что теперь я не знаю, должен ли я просто вводить каждую вершину вручную или есть более программный / автоматический способ сделать это, например, поиск по словарю. Потому что, когда сетка становится больше, мне потребуется вручную набирать еще большее количество вершин, что нежелательно.

Буду признателен за любые идеи и предложения о том, какой подход я должен использовать!

1 Ответ

0 голосов
/ 17 ноября 2018

Я мог бы дать каждой из этих вершин имя переменной

Даже если бы у вас были переменные для каждой вершины, вам нужно было бы знать, какая вершина находится "выше и слева" от щелчкакоординат.Так что, я думаю, вы не получите от них особой пользы;вам нужно только там, где щелкнула мышь, а затем выполнить математические расчеты на основе этого.

Поскольку я не знаю библиотеку обработки, я не уверен, как собирать клики, но как только вы получите координаты, это довольно простая проблема деления

CELL_WIDTH = 120

def get_cell(x, y):
    global CELL_WIDTH
    return {"col":x // CELL_WIDTH, "row": y // CELL_WIDTH}

Образцы

print(get_cell(0, 0))     # col=0, row=0
print(get_cell(0, 119))   # col=0, row=0
print(get_cell(0, 120))   # col=0, row=1
print(get_cell(120, 120)) # col=1, row=1
print(get_cell(120, 240)) # col=1, row=2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...