Nudibranch | Add-on for Grasshopper3d

nudibranch_icon0001

Long time no see. Been very busy in the last couple of months…:( However I am particularly happy about this post. For the past month I had the chance to work on something that has been on my mind at least two years now. And finally the time has come when I manage to publicly release Nudibranch  a new Add-on for Grasshopper3d.

What is a Nudibranch????????? Specifically Glaucus Atlanticus..

The Nudibrach Add-in for Grasshopper3d is a set of components facilitating and automating Grasshopper’s capacity to generate distance-based value fields, in addition to moving particles through attractor defined vector-fields while creating animated simulations of these particles.

In particular, Nudibranch aims to automate the attractor development process (one or multiple), while covering most of the frequently used cases, without however intending to replace or render useless the basic understanding of how attractors operate. Furthermore, three animation components enable the real-time interaction between attractors and the affected data.

Since this is the first release of Nudibranch and it might still contain  bugs. Please use it “as is”, it does not come with warranties. Please give credit where credit is due according to the license file.

You can download Nudibranch from the  Food4Rhino website, along with other useful plug-ins.

A brief documentation and generic examples are also included in the download folder.

I plan to share my experiments with Nudibranch through this blog and via the Grasshopper community group. If you create an interesting design, or even better if you want to share some feedback and your thoughts on Nudibranch just drop a line. It will be really appreciated.

Finally I would like to thank Mateusz, Michael, Andrea, Angel, Arthur, Angel, Tudor for testing Nudibranch out and shared their valuable feedback…

Enjoy,

M.

nudibranchtestnudibranch001enudibranch0012enudibranch0y012e

Creative Commons License

Nudibranch Copyright (C) 2013 by Marios Tsiliakos is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.

Permissions beyond the scope of this license may be available at www.digitalsubstance.wordpress.com.

Rossler Attractor Python Script in Grasshopper3d

Looking more into Python, the syntax and how you can use for loops, Rhinocommon and math within the GH Python Component, I decided to write and share this animated Python script of a Rossler attractor.  This particular attractor lies in the context of particle kinematics within chemical reactions. This system is defined by three non-linear ordinary differential equations originally studied by Otto Rössler. I find it to be, an extremely interesting and minimally beautiful system, mainly due to the particle’s easily observed movement in the Cartesian 3D space.

rosslers002

ros006

Thy python code looks something like this:

#”Rossler Attractor Grasshopper Python Component”
#Written by Marios Tsiliakos on 22/11/2012
#Based on the equations provided by Paul Bourke http://paulbourke.net
#Rossler Attractor by Marios Tsiliakos is licensed under a
#Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
#Based on work at http://www.digitalsubstance.wordpress.com.
#Imports
from math import *
import _random as rnd
import Rhino
# Subfunction
def Rossler(it):
#random number
r=rnd.Random(Seed)
r0 = r.random()*0.1
# set the constants
a = 0.15 + r0
b = 0.2 – r0
c = 5.7 + r0
h = H
var.append((round(a,2),round(b,2),round(c,2)))
# provide the initial point
x,y,z=0.1,0.0,0.0
for i in range(it):
x0= x + h*(-y -z)
y0= y + h*(x + a*y)
z0= z + h*(b+z*(x-c))
#make the resulting coordinates the coordinates last point
x,y,z = x0, y0, z0
pts= Rhino.Geometry.Point3d(x,y,z)
arrPts.append(pts)
#Main function
if Iterations == None:
Iterations = 1000
if H == None:
H = 0.05
if Seed == None:
Seed = 2
if Run== True:
#global lists
arrPts = []
var =[]
# always provide the creation of a curve by sufficient number of points
numpoints =counter+4
if numpoints < Iterations:
Rossler(numpoints)
crv = Rhino.Geometry.Curve.CreateInterpolatedCurve(arrPts,3)
counter+=10
print counter
print “Rossler attractor with values: a =” , var[0][0],”b=” , var[0][1],”c=”, var[0][2],”h=” , H
if numpoints >= Iterations:
print “goal achieved”
# Comment out the next line to get the resulting points
#Rossler(Iterations)
#crv = Rhino.Geometry.Curve.CreateInterpolatedCurve(arrPts,3)
#counter = Iterations
#outputs
Ross=crv
Points = arrPts
else :
print(“Idle”)
counter = 0

And here is a snapshot of the definition . You can download it at the usual place.

Enjoy!