1 import generativedesign.Node as Node 2 import generativedesign.Spring as Spring 3 import generativedesign.Attractor as Attractor 4 5 """ 6 part of the example files of the generativedesign library. 7 shows how to use the classes Node, Spring and Attractor in 3d space. 8 """ 9 10 def setup(): 11 """ 12 Setup Sketch smooth should be called here 13 """ 14 size(512, 512, P3D) 15 lights() 16 global nodeA, nodeB, attractor, spring 17 smooth(8) 18 fill(0) 19 nodeA = Node(random(width), random(height), random(-200, 200)) 20 nodeB = Node(random(width), random(height), random(-200, 200)) 21 nodeA.setStrength(-2) 22 nodeB.setStrength(-2) 23 nodeA.setDamping(0.1) 24 nodeB.setDamping(0.1) 25 nodeA.setBoundary(0, 0, -300, width, height, 300) 26 nodeB.setBoundary(0, 0, -300, width, height, 300) 27 28 spring = Spring(nodeA, nodeB) 29 spring.setStiffness(0.7) 30 spring.setDamping(0.9) 31 spring.setLength(100) 32 33 attractor = Attractor(width/2, height/2, 0) 34 attractor.setMode(Attractor.SMOOTH) 35 attractor.setRadius(200) 36 attractor.setStrength(5) 37 38 39 def draw(): 40 """ 41 The processing draw loop 42 """ 43 background(50, 50, 200) 44 lights() 45 ambientLight(100, 100, 100) 46 ambient(30) 47 specular(30) 48 if (mousePressed == True): 49 nodeA.x = mouseX 50 nodeA.y = mouseY 51 nodeA.z = mouseY - 256 52 # attraction between nodes 53 nodeA.attract(nodeB) 54 nodeB.attract(nodeA) 55 # update spring 56 spring.update() 57 # attract 58 attractor.attract(nodeA) 59 attractor.attract(nodeB) 60 # update node positions 61 nodeA.update() 62 nodeB.update() 63 # draw attractor 64 stroke(0, 50) 65 strokeWeight(1) 66 noFill() 67 line(attractor.x-10, attractor.y, attractor.x+10, attractor.y) 68 line(attractor.x, attractor.y-10, attractor.x, attractor.y+10) 69 ellipse(attractor.x, attractor.y, attractor.radius*2, attractor.radius*2) 70 # draw spring 71 stroke(255, 0, 0, 255) 72 strokeWeight(4) 73 line(nodeA.x, nodeA.y, nodeA.z, nodeB.x, nodeB.y, nodeB.z) 74 # draw nodes 75 noStroke() 76 fill(212) 77 pushMatrix() 78 translate(nodeA.x, nodeA.y, nodeA.z) 79 sphere(20) 80 popMatrix() 81 pushMatrix() 82 translate(nodeB.x, nodeB.y, nodeB.z) 83 sphere(20) 84 popMatrix()
Thursday, 29 November 2012
Yet another Generative Design Sketch in Processing.py
This is a sketch you definetly need to run to fully appreciate it.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment