Skip to content
Snippets Groups Projects
Commit 9ac5bb85 authored by Neil Gershenfeld's avatar Neil Gershenfeld
Browse files

add lattice

parent a856ea25
Branches
No related tags found
No related merge requests found
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/files.js'>files.js</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/files.js'>files.js</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/mods.js'>mods.js</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/mods.js'>mods.js</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/modules.js'>modules.js</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/modules.js'>modules.js</a><br>
<i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node_modules</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/printserver.js'>printserver.js</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/printserver.js'>printserver.js</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/programs.js'>programs.js</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/programs.js'>programs.js</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/serialserver.js'>serialserver.js</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./js/serialserver.js'>serialserver.js</a><br>
...@@ -74,6 +73,7 @@ ...@@ -74,6 +73,7 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/cube'>cube</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/cube'>cube</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/cylinder'>cylinder</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/cylinder'>cylinder</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/function'>function</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/function'>function</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/lattice'>lattice</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/pyramid'>pyramid</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/pyramid'>pyramid</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/sphere'>sphere</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/sphere'>sphere</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/torus'>torus</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='./modules/frep/shapes/3D/torus'>torus</a><br>
......
//
// frep lattice
//
// Neil Gershenfeld
// (c) Massachusetts Institute of Technology 2018
//
// This work may be reproduced, modified, distributed, performed, and
// displayed for any purpose, but must acknowledge the mods
// project. Copyright is retained and must be preserved. The work is
// provided as is; no warranty is provided, and users accept all
// liability.
//
// closure
//
(function(){
//
// module globals
//
var mod = {}
//
// name
//
var name = 'frep lattice'
//
// initialization
//
var init = function() {
mod.pitch.value = '.2'
mod.thickness.value = '.05'
mod.xmin.value = '-1'
mod.ymin.value = '-1'
mod.zmin.value = '-1'
mod.xmax.value = '1'
mod.ymax.value = '1'
mod.zmax.value = '1'
}
//
// inputs
//
var inputs = {
variables:{type:'',
event:function(evt){
for (var p in evt.detail)
mod[p].value = evt.detail[p]
outputs.variables.event()
outputs.shape.event()
}}}
//
// outputs
//
var outputs = {
shape:{type:'',
event:function(){
var pitch = parseFloat(mod.pitch.value)
var thickness = parseFloat(mod.thickness.value)
var xmin = parseFloat(mod.xmin.value)
var xmax = parseFloat(mod.xmax.value)
var ymin = parseFloat(mod.ymin.value)
var ymax = parseFloat(mod.ymax.value)
var zmin = parseFloat(mod.zmin.value)
var zmax = parseFloat(mod.zmax.value)
var xfn = `(${thickness}-((X%${pitch})+${pitch})%${pitch})`
var yfn = `(${thickness}-((Y%${pitch})+${pitch})%${pitch})`
var zfn = `(${thickness}-((Z%${pitch})+${pitch})%${pitch})`
var fn = `Math.max(Math.max(${xfn},${yfn}),${zfn})`
var xfn = `Math.min(X-(${xmin}),(${xmax})-X)`
var yfn = `Math.min(Y-(${ymin}),(${ymax})-Y)`
var zfn = `Math.min(Z-(${zmin}),(${zmax})-Z)`
var fn = `Math.min(Math.min(Math.min(${xfn},${yfn}),${zfn}),${fn})`
var variables = ['X','Y','Z']
var limits = [[xmin,xmax],[ymin,ymax],[zmin,zmax]]
var type = 'Magnitude'
var shape = {function:fn,variables:variables,limits:limits,type:type}
mods.output(mod,'shape',shape)}
},
variables:{type:'',
event:function(){
var pitch = parseFloat(mod.pitch.value)
var thickness = parseFloat(mod.thickness.value)
var xmin = parseFloat(mod.xmin.value)
var xmax = parseFloat(mod.xmax.value)
var ymin = parseFloat(mod.ymin.value)
var ymax = parseFloat(mod.ymax.value)
var zmin = parseFloat(mod.zmin.value)
var zmax = parseFloat(mod.zmax.value)
var vars = {pitch:pitch,thickness:thickness,xmin:xmin,ymin:ymin,zmin:zmin,xmax:xmax,ymax:ymax,zmax:zmax}
mods.output(mod,'variables',vars)}
}}
//
// interface
//
var interface = function(div){
mod.div = div
//
// pitch
//
div.appendChild(document.createTextNode('pitch: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.pitch = input
//
// thickness
//
div.appendChild(document.createTextNode(' thickness: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.thickness = input
div.appendChild(document.createElement('br'))
//
// xmin
//
div.appendChild(document.createTextNode('xmin: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.xmin = input
//
// xmax
//
div.appendChild(document.createTextNode(' xmax: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.xmax = input
div.appendChild(document.createElement('br'))
//
// ymin
//
div.appendChild(document.createTextNode('ymin: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.ymin = input
//
// ymax
//
div.appendChild(document.createTextNode(' ymax: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.ymax = input
div.appendChild(document.createElement('br'))
//
// zmin
//
div.appendChild(document.createTextNode('zmin: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.zmin = input
//
// zmax
//
div.appendChild(document.createTextNode(' zmax: '))
var input = document.createElement('input')
input.type = 'text'
input.size = 3
div.appendChild(input)
mod.zmax = input
div.appendChild(document.createElement('br'))
//
// output button
//
var btn = document.createElement('button')
btn.style.padding = mods.ui.padding
btn.style.margin = 1
btn.appendChild(document.createTextNode('output'))
btn.addEventListener('click',function(){
outputs.variables.event()
outputs.shape.event()
})
div.appendChild(btn)
}
//
// local functions
//
;
//
// return values
//
return ({
name:name,
init:init,
inputs:inputs,
outputs:outputs,
interface:interface
})
}())
...@@ -44,6 +44,7 @@ module_menu('         cone','modules/frep/shapes/3D/cone') ...@@ -44,6 +44,7 @@ module_menu('         cone','modules/frep/shapes/3D/cone')
module_menu(' cube','modules/frep/shapes/3D/cube') module_menu(' cube','modules/frep/shapes/3D/cube')
module_menu(' cylinder','modules/frep/shapes/3D/cylinder') module_menu(' cylinder','modules/frep/shapes/3D/cylinder')
module_menu(' function','modules/frep/shapes/3D/function') module_menu(' function','modules/frep/shapes/3D/function')
module_menu(' lattice','modules/frep/shapes/3D/lattice')
module_menu(' pyramid','modules/frep/shapes/3D/pyramid') module_menu(' pyramid','modules/frep/shapes/3D/pyramid')
module_menu(' sphere','modules/frep/shapes/3D/sphere') module_menu(' sphere','modules/frep/shapes/3D/sphere')
module_menu(' torus','modules/frep/shapes/3D/torus') module_menu(' torus','modules/frep/shapes/3D/torus')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment