# # Esfera # by David Pena. # Somewhat re-factored for ruby-processin # by Martin Prout # Distribucion aleatoria uniforme sobre la superficie de una esfera. # QUANTITY = 16000 attr_reader :orb, :phi, :radius, :rx, :ry def setup size(800, 600, P3D) @rx = 0 @ry =0 no_smooth @radius = height/3.5 @orb = HairyOrb.new factory = HairFactory.new(radius) QUANTITY.times do orb << factory.createHair end end def draw background(0) translate(width/2,height/2) rxp = ((mouse_x - (width/2))*0.005) ryp = ((mouse_y - (height/2))*0.005) @rx = (rx*0.9)+(rxp*0.1) @ry = (ry*0.9)+(ryp*0.1) rotate_y(rx) rotate_x(ry) fill(0) no_stroke sphere(radius) orb.render self, radius if (frame_count % 10 == 0) puts(frame_rate) end end class HairyOrb < Array include Processing::Proxy def render app, radius @app = app self.each do |hair| off = (app.noise(app.millis() * 0.0005, sin(hair.phi)) - 0.5) * 0.3 offb = (app.noise(app.millis() * 0.0007, sin(hair.z) * 0.01) - 0.5) * 0.3 thetaff = hair.theta + off phff = hair.phi + offb x = radius * cos(hair.theta) * cos(hair.phi) y = radius * cos(hair.theta) * sin(hair.phi) za = radius * sin(hair.theta) xo = radius * cos(thetaff) * cos(phff) yo = radius * cos(thetaff) * sin(phff) zo = radius * sin(thetaff) xb = xo * hair.len yb = yo * hair.len zb = zo * hair.len app.stroke_weight(1) app.begin_shape(LINES) app.stroke(0) app.vertex(x, y, za) app.stroke(200, 150) app.vertex(xb, yb, zb) app.end_shape() end end end class HairFactory attr_reader :radius def initialize radius @radius = radius end def createHair z = rand(-radius .. radius) phi = rand * TWO_PI len = rand(1.15 .. 1.2) theta = asin(z / radius) return Hair.new(z, phi, len, theta) end end class Hair attr_reader :z, :phi, :len, :theta def initialize z, phi, len, theta @z, @phi, @len, @theta = z, phi, len, theta end end
Experiments with ruby-processing (processing-2.2.1) and JRubyArt for processing-3.0
Friday, 15 February 2013
Hairy Ball (Esfera by David Pena)
Plenty of spurious code to ignore when translating this sketch to ruby-processing.
Labels:
processing-2.0,
ruby-processing
Subscribe to:
Post Comments (Atom)
Followers
Blog Archive
-
▼
2013
(94)
-
▼
February
(8)
- My Fork is now at Processing-2.0 and JRuby-1.7.4
- Shader API changed in latest processing version at...
- Hairy Ball (Esfera by David Pena)
- Conway game of life using shaders in ruby-processing
- A graphical example of deep jruby voodoo in ruby-p...
- Deep jruby voodo in ruby-processing
- Sand Traveler Refactored and Updated
- rspec and re-factoring cs_grammar
-
▼
February
(8)
About Me
- monkstone
- I have developed JRubyArt and propane new versions of ruby-processing for JRuby-9.1.5.0 and processing-3.2.2
No comments:
Post a Comment