33 lines
No EOL
939 B
JavaScript
33 lines
No EOL
939 B
JavaScript
|
|
var Form = function() {
|
|
var move = function(x) { return function(y) { return function(form) {
|
|
var t = form[1];
|
|
return [form[0], [[x + t[0][0], y + t[0][1]], t[1], t[2]]];
|
|
};
|
|
};
|
|
};
|
|
var rotate = function(theta) { return function(form) {
|
|
var t = form[1];
|
|
return [form[0], [t[0], t[1] + 2* Math.PI*theta, t[2]]];
|
|
};
|
|
};
|
|
var scale = function(s) { return function(form) {
|
|
var t = form[1];
|
|
return [form[0], [t[0], t[1], t[2] * s]];
|
|
};
|
|
};
|
|
var create = function(howToDraw, center) {
|
|
return [howToDraw, Transforms.create(center, 0, 1)];
|
|
};
|
|
var draw = function(form) {
|
|
ctx.save();
|
|
var trans = form[1];
|
|
ctx.translate(trans[0][0], trans[0][1]);
|
|
ctx.rotate(trans[1]);
|
|
ctx.scale(trans[2], trans[2]);
|
|
form[0](ctx);
|
|
ctx.restore();
|
|
return ctx;
|
|
};
|
|
return {create:create, move:move, rotate:rotate, scale:scale, draw:draw};
|
|
}(); |