summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbulia byak <buliabyak@gmail.com>2006-04-19 20:23:30 +0000
committerbuliabyak <buliabyak@users.sourceforge.net>2006-04-19 20:23:30 +0000
commitb6e7dd1a3f847a3dca4f1ea07b1536f9b9373dd3 (patch)
treeea403a7d45b6b31637d368390a108d1fa86e926d
parentcopyedit (diff)
downloadinkscape-b6e7dd1a3f847a3dca4f1ea07b1536f9b9373dd3.tar.gz
inkscape-b6e7dd1a3f847a3dca4f1ea07b1536f9b9373dd3.zip
added normal-distributed randomization
(bzr r546)
-rw-r--r--share/extensions/radiusrand.inx1
-rwxr-xr-xshare/extensions/radiusrand.py17
2 files changed, 13 insertions, 5 deletions
diff --git a/share/extensions/radiusrand.inx b/share/extensions/radiusrand.inx
index 88bfbe596..d714d2218 100644
--- a/share/extensions/radiusrand.inx
+++ b/share/extensions/radiusrand.inx
@@ -6,6 +6,7 @@
<param name="radius" type="float" min="0.0" max="1000.0" _gui-text="Radius">100.0</param>
<param name="end" type="boolean" _gui-text="Randomize nodes">true</param>
<param name="ctrl" type="boolean" _gui-text="Randomize node handles">false</param>
+ <param name="norm" type="boolean" _gui-text="Use normal distribution">true</param>
<effect>
<object-type>path</object-type>
<effects-menu>
diff --git a/share/extensions/radiusrand.py b/share/extensions/radiusrand.py
index 97e9aed41..27420a85d 100755
--- a/share/extensions/radiusrand.py
+++ b/share/extensions/radiusrand.py
@@ -18,8 +18,11 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'''
import random, math, inkex, cubicsuperpath
-def randomize((x, y), r):
- r = random.uniform(0.0,r)
+def randomize((x, y), r, norm):
+ if norm:
+ r = abs(random.normalvariate(0.0,0.5*r))
+ else:
+ r = random.uniform(0.0,r)
a = random.uniform(0.0,2*math.pi)
x += math.cos(a)*r
y += math.sin(a)*r
@@ -40,6 +43,10 @@ class RadiusRandomize(inkex.Effect):
action="store", type="inkbool",
dest="end", default=True,
help="Randomize nodes")
+ self.OptionParser.add_option("-n", "--norm",
+ action="store", type="inkbool",
+ dest="norm", default=True,
+ help="Use normal distribution")
def effect(self):
for id, node in self.selected.iteritems():
if node.tagName == 'path':
@@ -48,7 +55,7 @@ class RadiusRandomize(inkex.Effect):
for subpath in p:
for csp in subpath:
if self.options.end:
- delta=randomize([0,0], self.options.radius)
+ delta=randomize([0,0], self.options.radius, self.options.norm)
csp[0][0]+=delta[0]
csp[0][1]+=delta[1]
csp[1][0]+=delta[0]
@@ -56,8 +63,8 @@ class RadiusRandomize(inkex.Effect):
csp[2][0]+=delta[0]
csp[2][1]+=delta[1]
if self.options.ctrl:
- csp[0]=randomize(csp[0], self.options.radius)
- csp[2]=randomize(csp[2], self.options.radius)
+ csp[0]=randomize(csp[0], self.options.radius, self.options.norm)
+ csp[2]=randomize(csp[2], self.options.radius, self.options.norm)
d.value = cubicsuperpath.formatPath(p)
e = RadiusRandomize()