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

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);
};