kopia lustrzana https://github.com/villares/sketch-a-day
70 wiersze
2.0 KiB
Python
70 wiersze
2.0 KiB
Python
# Alexandre B A Villares - https://abav.lugaralgum.com / sketch - a - day
|
|
SKETCH_NAME = "s168" # 180616
|
|
|
|
add_library('peasycam')
|
|
|
|
points, lines, walls = [], [], []
|
|
|
|
def setup():
|
|
global space
|
|
size(600, 600, P3D)
|
|
hint(DISABLE_DEPTH_TEST)
|
|
strokeWeight(2)
|
|
# noSmooth()
|
|
cam = PeasyCam(this, 100)
|
|
cam.setMinimumDistance(100)
|
|
cam.setMaximumDistance(1000)
|
|
grid_dim = 10
|
|
space = width / grid_dim
|
|
for ix in range(grid_dim):
|
|
for iy in range(grid_dim):
|
|
for iz in range(grid_dim):
|
|
x = space / 2 + ix * space - width / 2 + random(2)
|
|
y = space / 2 + iy * space - width / 2 + random(2)
|
|
z = space / 2 + iz * space - width / 2 # + random(-2, 2)
|
|
points.append(PVector(x, y, z))
|
|
for p in points:
|
|
for op in points:
|
|
if p != op:
|
|
stroke(200, 0, 100)
|
|
if (dist(p.x, p.y, p.z,
|
|
op.x, op.y, op.z) < space * 1):
|
|
lines.append((p, op))
|
|
for (p1, p2) in lines:
|
|
for (p3, p4) in lines:
|
|
if p1 != p3 and p1 != p4 and p2 != p3 and p2 != p4:
|
|
if p1.z == p2.z and p3.z == p4.z and p1.z != p3.z:
|
|
if (dist(p1.x, p1.y, p1.z, p3.x, p3.y, p3.z) < space + 3 and
|
|
dist(p2.x, p2.y, p2.z, p4.x, p4.y, p4.z) < space + 3):
|
|
|
|
walls.append((p1, p2, p3, p4))
|
|
|
|
println(len(walls))
|
|
|
|
|
|
def draw():
|
|
background(200)
|
|
|
|
for w in walls:
|
|
p1, p2, p3, p4 = w
|
|
fill(100, 0, 200, 10)
|
|
noStroke()
|
|
beginShape()
|
|
vertex(p1.x, p1.y, p1.z)
|
|
vertex(p2.x, p2.y, p2.z)
|
|
vertex(p4.x, p4.y, p4.z)
|
|
vertex(p3.x, p3.y, p3.z)
|
|
endShape(CLOSE)
|
|
|
|
for (p, op) in lines:
|
|
stroke(200, 0, 100)
|
|
line(p.x, p.y, p.z, op.x, op.y, op.z)
|
|
|
|
for p in points:
|
|
pushMatrix()
|
|
translate(p.x, p.y, p.z)
|
|
fill(0)
|
|
noStroke()
|
|
box(2)
|
|
popMatrix()
|