Python Intro #02 | Function – Random Walk
Contents
- Random Walk
- Initial Setup
- Loop
- Function
- Concept
- Declaration/ Arguments / Return
- Usage
- Practice – Multiple Random Walks
- Random walk with function
- Initial Setup
- Loop
Random Walk
Initial Setup
import rhinoscriptsyntax as rs import random import math points = [] point = rs.AddPoint(0,0,0) points.append(point)
Loop
for i in range(x): theta = (random.random()-0.5)*math.pi*2 point = rs.CopyObject(point) rs.MoveObject(point,[math.cos(theta)*y,math.sin(theta)*y,0]) points.append(point)
Function
Concept
Function is the advanced feature in programming and is useful to make scripts more smart. Function is similar to the function in mathematics, it needs a couple of arguments (0 argument is also possible), and return several values as result.
Function is something like components in Grasshopper. They have some inputs and outputs. Arguments are inputs and Returns are output.
Declaration / Arguments / Return
The syntax to define functions is following:
def <function name>(<arguments>): ... return <value to return>
Following is the simplest example of function:
def addition(s,t): f = s+t return f
Usage
Using function is very easy. Following is a example to use previous function:
def addition(s,t): return s+t a = addition(x,y)
Practice – Multiple Random Walks
Random Walk with Function
import rhinoscriptsyntax as rs import random import math points = [] point = rs.AddPoint(0,0,0) points.append(point) def moveRandom(pt, range): theta = (random.random()-0.5)*math.pi*2 returnPt = rs.CopyObject(pt) rs.MoveObject(returnPt,[math.cos(theta)*y,math.sin(theta)*y,0]) return returnPt for i in range(x): newPt = moveRandom(point, y) point = newPt points.append(newPt) a=rs.AddPolyline(points)
Multiple Random Walk
import rhinoscriptsyntax as rs import random import math def moveRandom(pt, range): theta = (random.random()-0.5)*math.pi*2 returnPt = rs.CopyObject(pt) rs.MoveObject(returnPt,[math.cos(theta)*y,math.sin(theta)*y,0]) return returnPt listOfPoints = [] for j in range(10): points = [] point = rs.AddPoint(0,0,0) points.append(point) for i in range(x): newPt = moveRandom(point, y) point = newPt points.append(newPt) listOfPoints.append(points) listOfPolylines = [] for j in range(10): pl = rs.AddPolyline(listOfPoints[j]) listOfPolylines.append(pl) a = listOfPoints