Как соединить несколько точек линиями в opengl?

Предоставляемая информация является недостаточной, поэтому она может не применяться к вашему контексту, но ...

Ваша исходная структура БД выглядит так:

Помимо проблемы, о которой вы заявили, вы не сможете нормализовать эту структуру.

Я предлагаю что-то вроде этого:

  • Отношение Shop-Player должно обозначить «владельца» магазина.
  • Таблица ссылок участника должна связать участников игроков с магазином.
  • Поскольку я не знаю разницы между активным магазином и игровым магазином, я выделил эту характеристику в таблице ShopType, позволяя вам выбирать один или другой.
  • Выполнение этого, как это позволяет игрок, которого хочет любой магазин. Магазин - это магазин, из вашего описания я не понимаю, почему вам нужно иметь 2 стола для ваших двух типов магазинов. Магазин - это магазин, являющийся Активным или Игровым типом.
  • Это не является полным, добавьте разные отсутствующие поля для каждой таблицы, это иллюстрирует только структуру.

Другая возможность - если вам нужен магазин, чтобы быть 1) игроком 2) активным 3) оба. Затем таблицу магазина следует изменить следующим образом:

  • концепция типа удалена, а логические атрибуты определяют тип магазина.

Это, очевидно, работа в процессе, надеюсь, это поможет вам начать думать о вашем решении по-другому.

1
задан packetsthief 18 January 2019 в 20:48
поделиться

1 ответ

Рекомендую создать список точек. Каждый элемент списка представляет собой кортеж с координатами x и y точки:

points = []
for i in range(p):
    t = 2 * mt.pi * i / p

    x = r * mt.cos(t)
    y = r * mt.sin(t)

    points.append((x, y))

или

points = [(r*mt.cos(t), r*mt.sin(t)) for t in [2*mt.pi * i/p for i in range(p)]]

Линии от каждой точки до каждой другой точки можно нарисовать в 2 вложенных цикла. Каждая петля пересекает весь список точек:

glLineWidth(2.0)
glBegin(GL_LINES)
glColor3f(0.0, 1.0, 0.0)
for pt1 in points:
    for pt2 in points:
        glVertex2f(*pt1)
        glVertex2f(*pt2)
glEnd()

Нарисуйте точки сверху линий в одном цикле:

glPointSize(7.0)
glBegin(GL_POINTS)
glColor3f(1.0, 0.0, 0.0)
for pt in points:
    glVertex2f(*pt)
glEnd()

Примечание, glLineWidth [ 116] задают ширину растровых линий, а glPointSize задают диаметр растеризованных точек.

0
ответ дан Rabbid76 18 January 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: