You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.3 KiB
74 lines
2.3 KiB
|
|
function cp(phi) { |
|
return new Point(Math.sin(phi), Math.cos(phi)); |
|
} |
|
|
|
function rnd(min, max) { |
|
return min + Math.random() * (max - min); |
|
} |
|
|
|
function scribblify(objs, delta) { |
|
for(var i=0; i<objs.length; i++) { |
|
var p = objs[i].clone(); |
|
for(var j=0; j<p.segments.length; j++) { |
|
console.log(i, j); |
|
p.segments[j].point += new Size(rnd(-delta/2, delta/2), |
|
rnd(-delta/2, delta/2)); |
|
} |
|
} |
|
} |
|
|
|
globals.blome = function() { |
|
var pathprops = {strokeColor: 'black', strokeWidth: 1, |
|
closed: true}; |
|
var size = project.view.size; |
|
var stemwidth = 0.03; |
|
var num_leaves = 9; |
|
var leave_start = 5; |
|
var leave_size = size.width / 3; |
|
var spos = size * new Size(0.5, 0.99); |
|
var pos = project.view.size * new Size(rnd(0.4, 0.6), 0.3); |
|
|
|
var flower = []; |
|
|
|
var stem = new Path(pathprops); |
|
flower.push(stem); |
|
stem.add(spos - size * new Size(stemwidth, 0)); |
|
stem.add(pos); |
|
stem.add(spos + size * new Size(stemwidth, 0)); |
|
|
|
function mk_stemleave(stempos) { |
|
var stemleave = new Path(pathprops); |
|
flower.push(stemleave); |
|
var stemleavesize = size * new Size(0.25, 0.05); |
|
var p = stem.getPointAt(stem.length * stempos); |
|
var sig = (stempos < 0.5) ? -1 : 1; |
|
stemleave.add(p + new Size(size.width/70 * sig, 0)); |
|
stemleave.add(p + new Size(sig * rnd(0.8, 1.2), sig) * |
|
stemleavesize); |
|
stemleave.add(p + new Size(sig * rnd(0.8, 1.2), -sig) * |
|
stemleavesize); |
|
} |
|
mk_stemleave(rnd(0.15, 0.26)); |
|
mk_stemleave(rnd(0.75, 0.85)); |
|
|
|
for(var i=0; i<num_leaves; i++) { |
|
if(i==0) { |
|
continue; |
|
} |
|
var phi = (2 * Math.PI * i) / num_leaves; |
|
var dphi = (2 * Math.PI) / (num_leaves + 2) * 0.5; |
|
var leave = new Path(pathprops); |
|
flower.push(leave); |
|
leave.add(pos + cp(phi + rnd(-0.1, 0.1)) * leave_start * |
|
rnd(0.5, 5)); |
|
leave.add(pos + cp(phi + dphi + rnd(-0.1, 0.1)) * leave_size * |
|
rnd(0.9, 1.3)); |
|
leave.add(pos + cp(phi - dphi + rnd(-0.1, 0.1)) * leave_size * |
|
rnd(0.9, 1.3)); |
|
} |
|
scribblify(flower, 25); |
|
scribblify(flower, 25); |
|
scribblify(flower, 5); |
|
}; |
|
|
|
|