Orthogonal polyhedra origami
JavaScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example readme updates Dec 25, 2014
lib update example Jul 15, 2014
test update example Jul 15, 2014
.gitignore adding files Jul 5, 2014
LICENSE adding files Jul 5, 2014
README.md readme updates Dec 25, 2014
index.js update example Jul 15, 2014
package.json readme updates Dec 25, 2014

README.md

orthogami

Turn voxel models into foldable origami! For example, you can turn this mario model:

Into this foldable model:

If you want to try making a Mario yourself, here is a PDF in A4 format.

This module works in any reasonable CommonJS environment (includes node.js and browserify). You can also use it with the voxel critter creator (select "Export Orthogami").

Example usage

//First create a voxel set
//  0 = empty
var voxels = require('ndarray-pack')([
  [[0, 1],
   [2, 3]],
  [[0, 0],
   [0, 4]]
])

//Require the module (works with browserify)
var orthogami = require('orthogami')

//Set up options (can skip this if you like)
var options = {
  units: 'mm',            //Units
  bounds: [210, 297],     //Page size
  scale: 10,              //Size of voxel
  lineWidth: 0.1          //Size of dashed line
}

//Then run orthogami
var svgs = orthogami(voxels, options)

//Print out the result
var fs = require('fs')
svgs.forEach(function(svg, idx) {
  fs.writeFileSync('page' + idx + '.svg', svg)
})

Output

Page 1:

Page 2:

Install

npm install orthogami

API

require('orthogami')(voxels[, options])

Generates an origami template for folding a model from the given voxel object.

  • voxels is a 3D ndarray of integer values. 0 values indicate empty voxels.

  • options is an optional object containing any of the following extra parameters:

    • colorMap a function mapping color values in the voxels to SVG color names, or alternatively an array of SVG color names.
    • bounds a 2D array representing the size of each page (default [Infinity, Infinity])
    • scale a number giving the size of each voxel (default 64)
    • convexColor the color of the convex creases (default 'black')
    • concaveColor the color of the concave creases (default 'white')
    • tabColor the color of the tab lines (default 'black')
    • lineWidth the width of the crease lines (default 1)
    • units the units for the coordinate system (default 'px')

Returns An array of SVG files encoding the pages of the origami printout

Credits

(c) 2014 Mikola Lysenko. MIT License