kopia lustrzana https://github.com/villares/sketch-a-day
one more step into the face problem
rodzic
45c59352c4
commit
3952619802
|
@ -1,7 +1,7 @@
|
|||
class Node():
|
||||
nodes = []
|
||||
grid = dict()
|
||||
ver = set()
|
||||
ver = []
|
||||
|
||||
def __init__(self, x, y, z):
|
||||
self.ix = x
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
def order_segments(unord):
|
||||
# first sort the segments
|
||||
p0, p1 = unord.pop()
|
||||
ord = [(p0, p1)]
|
||||
while unord:
|
||||
for pair in unord:
|
||||
if p0 in pair or p1 in pair:
|
||||
ord.append(pair)
|
||||
unord.remove(pair)
|
||||
p0, p1 = pair[0], pair[1]
|
||||
break
|
||||
else: # break a possible infinite while
|
||||
print("malformed edge sequence")
|
||||
break
|
||||
## # now fix each segment's internal vertex order
|
||||
## unord = ord
|
||||
## p0, p1 = unord.pop(0)
|
||||
## if p1 != unord[0][0]:
|
||||
## p1, p0 = p0, p1
|
||||
## ord = [(p0, p1)]
|
||||
## for pair in unord:
|
||||
## if p1 == pair[0]:
|
||||
## p0, p1 = pair[0], pair[1]
|
||||
## else:
|
||||
## p0, p1 = pair[1], pair[0]
|
||||
## ord.append((p0, p1))
|
||||
# if you want the vertex points only :)
|
||||
p0, p1 = ord.pop(0)
|
||||
if p1 != ord[0][0]:
|
||||
p1, p0 = p0, p1
|
||||
points = [p0]
|
||||
for pair in ord:
|
||||
if p1 == pair[0]:
|
||||
p0, p1 = pair[0], pair[1]
|
||||
else:
|
||||
p0, p1 = pair[1], pair[0]
|
||||
points.append(p0)
|
||||
|
||||
return points
|
|
@ -9,6 +9,7 @@ from random import choice
|
|||
from random import randint
|
||||
|
||||
from node import Node
|
||||
from order_segments import order_segments
|
||||
|
||||
def setup():
|
||||
global ang
|
||||
|
@ -21,29 +22,23 @@ def setup():
|
|||
cam.setMaximumDistance(750)
|
||||
random_seed(101)
|
||||
init_grid(GRID_SIZE)
|
||||
|
||||
global segmentos, first, next_, ordenados
|
||||
for l in range(1):
|
||||
segmentos = [t for t in Node.ver if t[0][3] == l]
|
||||
first, next_ = segmentos[-1]
|
||||
# ordenados = sort(segmentos)
|
||||
|
||||
|
||||
def draw():
|
||||
global ang, segmentos, next_
|
||||
background(0)
|
||||
rotateY(ang)
|
||||
|
||||
for node in Node.nodes:
|
||||
node.plot()
|
||||
node.plot()
|
||||
|
||||
|
||||
for l in range(GRID_SIZE):
|
||||
fill(255)
|
||||
beginShape()
|
||||
for (x, y, z, iz), (x2, y2, z2, _) in segmentos:
|
||||
if l == iz:
|
||||
stroke(128, 200, 200)
|
||||
fill(255, 100)
|
||||
beginShape()
|
||||
for (x, y, z, iz) in points:
|
||||
if 0 == iz:
|
||||
vertex(x, y, z-10)
|
||||
vertex(x2, y2, z2-10)
|
||||
endShape()
|
||||
endShape()
|
||||
|
||||
# while len(segmentos)>2:
|
||||
|
||||
|
@ -73,6 +68,12 @@ def init_grid(grid_size):
|
|||
node.update_nbs()
|
||||
|
||||
|
||||
for l in range(1):
|
||||
global points
|
||||
segmentos = [t for t in Node.ver if t[0][3] == l]
|
||||
# print(set(segmentos))
|
||||
points = order_segments(set(segmentos))
|
||||
print(points)
|
||||
|
||||
|
||||
def keyPressed():
|
||||
|
|
Ładowanie…
Reference in New Issue