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.
75 lines
2.3 KiB
75 lines
2.3 KiB
4 years ago
|
|
||
|
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);
|
||
|
};
|
||
|
|