{ "nodes": [ { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "-.75", "name": "y0", "type": "float", "uid": 1 }, { "expr": ".33", "name": "x1", "type": "float", "uid": 2 }, { "expr": "3", "name": "y1", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('aa-f0X-Xf0.33a-f-0.75Y-Yf3',float('0.000000'),float('-0.750000'),float('-inf'),float('0.330000'),float('3.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ -189.82730843606851, -85.79765353042643 ], "name": "r0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rectangle (corner)')", "", "input('x0', float)", "input('y0', float)", "input('x1', float)", "input('y1', float)", "", "output('shape', fab.shapes.rectangle(x0, x1, y0, y1))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x1, y0, 0),", " (x1, y1, 0), (x0, y1, 0)], close=True)", "sb.ui.point(x0, y0)", "sb.ui.point(x1, y1)", "", "" ], "uid": 0 }, { "datums": [ { "expr": "0", "name": "x0", "type": "float", "uid": 0 }, { "expr": "\u0011[__0.__3]", "name": "y0", "type": "float", "uid": 1 }, { "expr": ".1", "name": "r", "type": "float", "uid": 2 }, { "expr": "0", "name": "_a", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r+qXq-Yf3f0.1',float('-0.100000'),float('2.900000'),float('-inf'),float('0.100000'),float('3.100000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 70.783064162601846, -82.58024152303544 ], "name": "c0", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/18", "", "import fab", "import math", "", "title('Circle (center)')", "", "input('x0',float)", "input('y0',float)", "input('r',float)", "input('_a',float)", "", "output('shape', fab.shapes.circle(x0, y0, r))", "", "def drag_r(this,x,y,z):", " dx = x - this.x0", " dy = y - this.y0", " this.r = math.sqrt(dx**2 + dy**2)", " this._a = math.atan2(dy, dx)", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x0,", " math.sin(i/36. * 2*math.pi) * r + y0, 0)", " for i in range(36)], close=True)", "sb.ui.point(x0,y0)", "sb.ui.point(x0 + r*math.cos(_a),", " y0 + r*math.sin(_a),", " drag=drag_r, relative=False)", "", "" ], "uid": 1 }, { "datums": [ { "expr": "\u0011[__0.__2]", "name": "x0", "type": "float", "uid": 0 }, { "expr": "\u0011[__0.__3]", "name": "y0", "type": "float", "uid": 1 }, { "expr": "\u0011[__1.__2]", "name": "r", "type": "float", "uid": 2 }, { "expr": "0", "name": "_a", "type": "float", "uid": 3 }, { "expr": "\u0012fab.types.Shape('-r+q-Xf0.33q-Yf3f0.1',float('0.230000'),float('2.900000'),float('-inf'),float('0.430000'),float('3.100000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 69.274624499078527, 116.09576371726368 ], "name": "c1", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/18", "", "import fab", "import math", "", "title('Circle (center)')", "", "input('x0',float)", "input('y0',float)", "input('r',float)", "input('_a',float)", "", "output('shape', fab.shapes.circle(x0, y0, r))", "", "def drag_r(this,x,y,z):", " dx = x - this.x0", " dy = y - this.y0", " this.r = math.sqrt(dx**2 + dy**2)", " this._a = math.atan2(dy, dx)", "", "# UI", "sb.ui.wireframe([", " (math.cos(i/36. * 2*math.pi) * r + x0,", " math.sin(i/36. * 2*math.pi) * r + y0, 0)", " for i in range(36)], close=True)", "sb.ui.point(x0,y0)", "sb.ui.point(x0 + r*math.cos(_a),", " y0 + r*math.sin(_a),", " drag=drag_r, relative=False)", "", "" ], "uid": 2 }, { "datums": [ { "expr": "\u0011[__4.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "0.0", "name": "_x", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 2 }, { "expr": "4", "name": "i", "type": "int", "uid": 3 }, { "expr": "1", "name": "j", "type": "int", "uid": 4 }, { "expr": "4.66", "name": "dx", "type": "float", "uid": 5 }, { "expr": "1", "name": "dy", "type": "float", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-0.250000'),float('-0.750000'),float('-inf'),float('14.559999'),float('3.100000'),float('inf'))", "name": "array", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 410.54061980490667, 235.26552858322592 ], "name": "a0", "script": [ "import fab", "", "title('Array (2D)')", "", "input('shape', fab.types.Shape)", "input('_x', float)", "input('_y', float)", "input('i', int)", "input('j', int)", "input('dx', float)", "input('dy', float)", "", "output('array', fab.shapes.iterate2d(shape, i, j, dx, dy))", "", "# UI", "sb.ui.wireframe([", " (_x + dx, _y, 0), (_x, _y, 0), (_x, _y + dy, 0)], color=sb.color.teal)", "sb.ui.wireframe([", " (_x + dx, _y - 0.3, 0), (_x + dx, _y + 0.3, 0)], color=sb.color.teal)", "sb.ui.wireframe([", " (_x + 0.3, _y + dy, 0), (_x - 0.3, _y + dy, 0)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, 0, color=sb.color.teal)", "sb.ui.point(_x + dx, _y, 0, color=sb.color.teal, drag=(dx, None, None))", "sb.ui.point(_x, _y + dy, 0, color=sb.color.teal, drag=(None, dy, None))", "" ], "uid": 3 }, { "datums": [ { "expr": "\u0011[__0.__4]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__1.__4,__2.__4,__13.__6]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-0.250000'),float('-0.750000'),float('-inf'),float('0.580000'),float('3.100000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 379.49041316162396, 21.379741586570365 ], "name": "u0", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 4 }, { "datums": [ { "expr": "\u0011[__4.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-0.250000'),float('-0.750000'),float('-inf'),float('0.580000'),float('3.100000'),float('inf'))", "name": "copy", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 394.25230366211792, -156.37940536318649 ], "name": "c2", "script": [ "# Neil Gershenfeld 2/14/15", "# Matt Keeter 6/12/15", "", "import fab", "", "title('Copy')", "", "input('shape', fab.types.Shape)", "output('copy', shape)", "", "" ], "uid": 5 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "1.5", "name": "y0", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "\u0011[__5.__1]", "name": "shape", "type": "_fabtypes.Shape", "uid": 3 }, { "expr": "\u0012fab.types.Shape('m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-0.250000'),float('-0.100000'),float('-inf'),float('0.580000'),float('3.750000'),float('inf'))", "name": "reflected", "type": "_fabtypes.Shape", "uid": 4 } ], "inspector": [ 755.4667047827179, -165.18951270759138 ], "name": "r1", "script": [ "import fab", "", "title('Reflect (Y)')", "", "input('_x', float)", "input('y0', float)", "input('_z', float)", "", "input('shape', fab.types.Shape)", "output('reflected', fab.shapes.reflect_y(shape, y0))", "", "# UI", "sb.ui.wireframe([", " (_x - 1, y0, _z + 1),", " (_x + 1, y0, _z + 1),", " (_x + 1, y0, _z - 1),", " (_x - 1, y0, _z - 1)], color=sb.color.teal, close=True)", "", "sb.ui.point(_x, y0, _z, color=sb.color.teal)", "", "" ], "uid": 6 }, { "datums": [ { "expr": "0.0", "name": "_x", "type": "float", "uid": 0 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_z", "type": "float", "uid": 2 }, { "expr": "2.33", "name": "dx", "type": "float", "uid": 3 }, { "expr": "0", "name": "dy", "type": "float", "uid": 4 }, { "expr": "0", "name": "dz", "type": "float", "uid": 5 }, { "expr": "\u0011[__6.__4]", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('2.080000'),float('-0.100000'),float('-inf'),float('2.910000'),float('3.750000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 1068.0464375147303, -159.23601432037796 ], "name": "t0", "script": [ "import fab", "", "title('Translate')", "", "input('_x', float)", "input('_y', float)", "input('_z', float)", "input('dx', float)", "input('dy', float)", "input('dz', float)", "", "input('shape', fab.types.Shape)", "output('out', fab.shapes.translate(shape, dx, dy, dz))", "", "# UI", "sb.ui.wireframe([(_x, _y, _z),", " (_x + dx, _y + dy, _z + dz)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y - 0.3, _z),", " (_x, _y + 0.3, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x - 0.3, _y, _z),", " (_x + 0.3, _y, _z)], color=sb.color.teal)", "sb.ui.wireframe([(_x, _y, _z - 0.3),", " (_x, _y, _z + 0.3)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, _z, color=sb.color.teal)", "sb.ui.point(_x + dx, _y + dy, _z + dz, color=sb.color.teal, drag=(dx, dy, dz))", "" ], "uid": 7 }, { "datums": [ { "expr": "\u0011[__7.__7]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "0.0", "name": "_x", "type": "float", "uid": 1 }, { "expr": "0.0", "name": "_y", "type": "float", "uid": 2 }, { "expr": "4", "name": "i", "type": "int", "uid": 3 }, { "expr": "1", "name": "j", "type": "int", "uid": 4 }, { "expr": "4.66", "name": "dx", "type": "float", "uid": 5 }, { "expr": "1", "name": "dy", "type": "float", "uid": 6 }, { "expr": "\u0012fab.types.Shape('m-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('2.080000'),float('-0.100000'),float('-inf'),float('16.889999'),float('3.750000'),float('inf'))", "name": "array", "type": "_fabtypes.Shape", "uid": 7 } ], "inspector": [ 1076.3242580761332, 80.954303171538228 ], "name": "a1", "script": [ "import fab", "", "title('Array (2D)')", "", "input('shape', fab.types.Shape)", "input('_x', float)", "input('_y', float)", "input('i', int)", "input('j', int)", "input('dx', float)", "input('dy', float)", "", "output('array', fab.shapes.iterate2d(shape, i, j, dx, dy))", "", "# UI", "sb.ui.wireframe([", " (_x + dx, _y, 0), (_x, _y, 0), (_x, _y + dy, 0)], color=sb.color.teal)", "sb.ui.wireframe([", " (_x + dx, _y - 0.3, 0), (_x + dx, _y + 0.3, 0)], color=sb.color.teal)", "sb.ui.wireframe([", " (_x + 0.3, _y + dy, 0), (_x - 0.3, _y + dy, 0)], color=sb.color.teal)", "", "sb.ui.point(_x, _y, 0, color=sb.color.teal)", "sb.ui.point(_x + dx, _y, 0, color=sb.color.teal, drag=(dx, None, None))", "sb.ui.point(_x, _y + dy, 0, color=sb.color.teal, drag=(None, dy, None))", "" ], "uid": 8 }, { "datums": [ { "expr": "\u0011[__3.__7]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__8.__7]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('im-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-0.250000'),float('-0.750000'),float('-inf'),float('16.889999'),float('3.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 968.18140212428273, 525.12629560744313 ], "name": "u1", "script": [ "import fab.types", "", "title('Union')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a | b)", "" ], "uid": 9 }, { "datums": [ { "expr": "\u0011[__14.__5]", "name": "a", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0011[__9.__2]", "name": "b", "type": "_fabtypes.Shape", "uid": 1 }, { "expr": "\u0012fab.types.Shape('aiiiiiaa-f-1.5X-Xf18.14a-f-0.1875Y-Yf3.1875aa-f-0.9375X-Xf17.5775a-f-0.75Y-Yf3.75-r+q-Xf-0.9375q-Yf-0.1875f0.5625-r+q-Xf-0.9375q-Yf3.1875f0.5625-r+q-Xf17.5775q-Yf-0.1875f0.5625-r+q-Xf17.5775q-Yf3.1875f0.5625nim-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-1.500000'),float('-0.750000'),float('-inf'),float('18.139999'),float('3.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 2 } ], "inspector": [ 855.79589170987254, 703.83213523802601 ], "name": "d0", "script": [ "import fab.types", "", "title('Difference')", "input('a', fab.types.Shape)", "input('b', fab.types.Shape)", "", "output('shape', a & ~b)", "" ], "uid": 11 }, { "datums": [ { "expr": "\u0011[__11.__2]", "name": "shape", "type": "_fabtypes.Shape", "uid": 0 }, { "expr": "\u0012fab.types.Shape('aiiiiiaa-f-1.5X-Xf18.14a-f-0.1875Y-Yf3.1875aa-f-0.9375X-Xf17.5775a-f-0.75Y-Yf3.75-r+q-Xf-0.9375q-Yf-0.1875f0.5625-r+q-Xf-0.9375q-Yf3.1875f0.5625-r+q-Xf17.5775q-Yf-0.1875f0.5625-r+q-Xf17.5775q-Yf3.1875f0.5625nim-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf0-Yf0-Zf0iiim-Xf0-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf4.66-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf9.32-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0m-Xf13.98-Yf0-Zf0m-Xf2.33-Yf0-Zf0m_-*f2f1.5Y_iaa-f0X-Xf0.33a-f-0.75Y-Yf3ii-r+qXq-Yf3f0.1-r+q-Xf0.33q-Yf3f0.1ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-1.500000'),float('-0.750000'),float('-inf'),float('18.139999'),float('3.750000'),float('inf'))", "name": "out", "type": "_fabtypes.Shape", "uid": 1 } ], "inspector": [ 1178.9700522166968, 754.23193296832346 ], "name": "h0", "script": [ "import fab", "", "title('Heightmap (.png)')", "", "input('shape', fab.types.Shape)", "output('out', shape)", "", "sb.export.heightmap(shape)", "" ], "uid": 12 }, { "datums": [ { "expr": "-.25", "name": "x0", "type": "float", "uid": 0 }, { "expr": "-.75", "name": "y0", "type": "float", "uid": 1 }, { "expr": ".58", "name": "x1", "type": "float", "uid": 2 }, { "expr": "-.75", "name": "y1", "type": "float", "uid": 3 }, { "expr": ".166", "name": "x2", "type": "float", "uid": 4 }, { "expr": "0", "name": "y2", "type": "float", "uid": 5 }, { "expr": "\u0012fab.types.Shape('ni-*f0-Xf0.58*f-0.83-Yf-0.75i-*f0.75-Xf-0.25*f0.416-Yf-0.75-*f-0.75-Xf0.166*f0.414-Yf0',float('-0.250000'),float('-0.750000'),float('-inf'),float('0.580000'),float('0.000000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 6 } ], "inspector": [ -111.59195024396344, 334.77585073189033 ], "name": "t1", "script": [ "import fab", "", "title('Triangle')", "", "input('x0', float)", "input('y0', float)", "input('x1', float)", "input('y1', float)", "input('x2', float)", "input('y2', float)", "", "output('shape', fab.shapes.triangle(x0, y0, x1, y1, x2, y2))", "", "# UI", "sb.ui.wireframe([(x0, y0, 0), (x1, y1, 0), (x2, y2, 0)], close=True)", "sb.ui.point(x0, y0, 0)", "sb.ui.point(x1, y1, 0)", "sb.ui.point(x2, y2, 0)", "" ], "uid": 13 }, { "datums": [ { "expr": "-1.5", "name": "xmin", "type": "float", "uid": 0 }, { "expr": "-.75", "name": "ymin", "type": "float", "uid": 1 }, { "expr": "18.14", "name": "xmax", "type": "float", "uid": 2 }, { "expr": "3.75", "name": "ymax", "type": "float", "uid": 3 }, { "expr": ".25", "name": "r", "type": "float", "uid": 4 }, { "expr": "\u0012fab.types.Shape('iiiiiaa-f-1.5X-Xf18.14a-f-0.1875Y-Yf3.1875aa-f-0.9375X-Xf17.5775a-f-0.75Y-Yf3.75-r+q-Xf-0.9375q-Yf-0.1875f0.5625-r+q-Xf-0.9375q-Yf3.1875f0.5625-r+q-Xf17.5775q-Yf-0.1875f0.5625-r+q-Xf17.5775q-Yf3.1875f0.5625',float('-1.500000'),float('-0.750000'),float('-inf'),float('18.139999'),float('3.750000'),float('inf'))", "name": "shape", "type": "_fabtypes.Shape", "uid": 5 } ], "inspector": [ 484.33231329072305, 839.82745949918456 ], "name": "r3", "script": [ "# Neil Gershenfeld 1/24/15", "# Matt Keeter 6/11/15", "", "import fab", "", "title('Rounded rectangle (corner)')", "", "input('xmin', float)", "input('ymin', float)", "input('xmax', float)", "input('ymax', float)", "input('r', float)", "", "# This is the circle's radius in actual units (not a 0-1 fraction)", "r_ = r * min(xmax - xmin, ymax - ymin) / 2", "", "output('shape', fab.shapes.rounded_rectangle(xmin, xmax, ymin, ymax, r))", "", "def drag_r(this, x, y, z):", " if abs(this.xmax - this.xmin) < abs(this.ymax - this.ymin):", " d = abs(this.xmax - this.xmin)", " mid = this.ymax - d / 2", " else:", " d = abs(this.ymax - this.ymin)", " mid = (this.ymin + this.ymax) / 2", " r = 1 - (y - mid) / (d/2)", " this.r = float(min(1, max(0, r)))", "", "# UI", "sb.ui.wireframe(", " [(xmin, ymin, 0), (xmax, ymin, 0), (xmax, ymax, 0), (xmin, ymax, 0)],", " close=True)", "sb.ui.wireframe([(xmax - r_, ymax, 0), (xmax, ymax - r_, 0)])", "sb.ui.point(xmin, ymin)", "sb.ui.point(xmax, ymax)", "sb.ui.point(xmax, ymax - r_, drag=drag_r, relative=False)", "", "" ], "uid": 14 } ], "protocol": 6, "type": "sb" }