Truchet patterns can be scaled and rotated to make cool pictures. Try out the tool here https://zimjs.com/truchet. We have seen them around but recently decided to find out what they are and learned about them here https://christophercarlson.com/portfolio/multi-scale-truchet-patterns/
Here is the format of the ZIM MVC - model, view, controller.
const model = new app.Model(); const view = new app.View(model); const controller = new app.Controller(model, view);
In each of the remote js files we store the classes on a namespace. We could have used ES6 import but, I prefer testing locally and import order is not an issue here. Here is start of the https://zimjs.com/truchet/model.js file:
var app = app||{}; // set the app namespace // The model holds starting data // and handles accessing data from a database, localStorage, etc. app.Model = class { constructor() { const m = this; // shortcut // hold the base size for the Truchet m.size = 200; m.highlightAlpha = .3; // etc. } }
Here is the start of the https://zimjs.com/truchet/view.js
var app = app||{}; // The View holds all the objects that will be seen // The View may be guided by the Model and gets passed to the Controller // Anything the Controller will need to control store on v (this) app.View = class { constructor(m) { // receive m for the model const v = this; // frame is global - or can send and receive as parameter const stage = frame.stage; const stageW = stage.width; const stageH = stage.height; v.backing = new Rectangle(stageW, stageH, red).addTo(); // etc. } }
And the start of the https://zimjs.com/truchet/controller.js
var app = app||{}; // The Controller is the last MVC made // and receives the Model (m) and the View (v) // The Controller holds all the events // and updates the View and the Model when needed app.Controller = class { constructor(m, v) { const c = this; const stage = frame.stage; const stageW = stage.width; const stageH = stage.height; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // TRUCHET EVENTS let current; v.holders.on("mousedown", e=>{ current = e.target; // etc. }); // etc. } }
You can see that it is quite a nice set-up. It is a dream to code in ZIM with JavaScript on the Canvas! We are happy, like this guy!
If you have not checked out the Canvas recently - you simply must! Here is the ZIM Dev Site and some In-depth Guides by Dr Abstract including Your Guide to Coding Creativity on the Canvas.
Top comments (1)
Here is the app as a CodePen project: codepen.io/zimjs/project/editor/Zb...