summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0bc9ee8)
raw | patch | inline | side by side (parent: 0bc9ee8)
author | buliabyak <buliabyak@users.sourceforge.net> | |
Mon, 5 May 2008 01:22:48 +0000 (01:22 +0000) | ||
committer | buliabyak <buliabyak@users.sourceforge.net> | |
Mon, 5 May 2008 01:22:48 +0000 (01:22 +0000) |
share/extensions/radiusrand.inx | patch | blob | history | |
share/extensions/radiusrand.py | patch | blob | history |
index 92fa5cd54978aaa1beab506b6b5afcd311ff052c..3349f4549d16cbd8030964cbde726856cd0b9d9a 100644 (file)
<dependency type="executable" location="extensions">radiusrand.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
<_param name="title" type="description">This effect randomly shifts the nodes (and optionally node handles) of the selected path.</_param>
- <param name="radius" type="float" min="0.0" max="1000.0" _gui-text="Maximum displacement, px">100.0</param>
+ <param name="radiusx" type="float" min="0.0" max="1000.0" _gui-text="Maximum displacement in X, px">10.0</param>
+ <param name="radiusy" type="float" min="0.0" max="1000.0" _gui-text="Maximum displacement in Y, px">10.0</param>
<param name="end" type="boolean" _gui-text="Shift nodes">true</param>
<param name="ctrl" type="boolean" _gui-text="Shift node handles">false</param>
<param name="norm" type="boolean" _gui-text="Use normal distribution">true</param>
index 5eb73965b2ef87b39b5308bf3167a26e688486bd..902601c285cab070262e01b5f1a69dc1bb437a74 100755 (executable)
'''
import random, math, inkex, cubicsuperpath
-def randomize((x, y), r, norm):
+def randomize((x, y), rx, ry, norm):
if norm:
- r = abs(random.normalvariate(0.0,0.5*r))
+ r = abs(random.normalvariate(0.0,0.5*max(rx, ry)))
else:
- r = random.uniform(0.0,r)
+ r = random.uniform(0.0,max(rx, ry))
a = random.uniform(0.0,2*math.pi)
- x += math.cos(a)*r
- y += math.sin(a)*r
+ x += math.cos(a)*rx
+ y += math.sin(a)*ry
return [x, y]
class RadiusRandomize(inkex.Effect):
def __init__(self):
inkex.Effect.__init__(self)
self.OptionParser.add_option("--title")
- self.OptionParser.add_option("-r", "--radius",
+ self.OptionParser.add_option("-x", "--radiusx",
action="store", type="float",
- dest="radius", default=10.0,
- help="Randomly move control and end points in this radius")
+ dest="radiusx", default=10.0,
+ help="Randomly move nodes and handles within this radius, X")
+ self.OptionParser.add_option("-y", "--radiusy",
+ action="store", type="float",
+ dest="radiusy", default=10.0,
+ help="Randomly move nodes and handles within this radius, Y")
self.OptionParser.add_option("-c", "--ctrl",
action="store", type="inkbool",
dest="ctrl", default=True,
for subpath in p:
for csp in subpath:
if self.options.end:
- delta=randomize([0,0], self.options.radius, self.options.norm)
+ delta=randomize([0,0], self.options.radiusx, self.options.radiusy, self.options.norm)
csp[0][0]+=delta[0]
csp[0][1]+=delta[1]
csp[1][0]+=delta[0]
csp[2][0]+=delta[0]
csp[2][1]+=delta[1]
if self.options.ctrl:
- csp[0]=randomize(csp[0], self.options.radius, self.options.norm)
- csp[2]=randomize(csp[2], self.options.radius, self.options.norm)
+ csp[0]=randomize(csp[0], self.options.radiusx, self.options.radiusy, self.options.norm)
+ csp[2]=randomize(csp[2], self.options.radiusx, self.options.radiusy, self.options.norm)
node.set('d',cubicsuperpath.formatPath(p))
e = RadiusRandomize()