Рекомендую создать список точек. Каждый элемент списка представляет собой кортеж с координатами 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
задают диаметр растеризованных точек.
Вы совместно используете общий DataContext? Это объяснило бы проблемы поточной обработки, которые Вы описываете, поскольку DataContext не ориентирован на многопотоковое исполнение.
Проверьте, что все столбцы "первичного ключа" в Вашем dbml на самом деле касаются первичных ключей на таблицах базы данных. У меня просто была ситуация, где разработчик решил поместить дополнительный столбец PK в dbml, который означал, что LINQ к SQL не мог найти обе стороны внешнего ключа при сохранении.