From 724d023900fbb63087fb46d45c9c91162eb84d0b Mon Sep 17 00:00:00 2001 From: amandaghassaei <amandaghassaei@gmail.com> Date: Tue, 2 May 2017 17:27:15 -0400 Subject: [PATCH] waterbomb --- assets/Tessellations/waterbomb.svg | 95 ++++++++++++++++++++++++++++++ index.html | 6 +- js/controls.js | 18 ++++++ js/globals.js | 2 +- js/model.js | 4 ++ js/pattern.js | 86 ++++++++++++++------------- 6 files changed, 165 insertions(+), 46 deletions(-) create mode 100644 assets/Tessellations/waterbomb.svg diff --git a/assets/Tessellations/waterbomb.svg b/assets/Tessellations/waterbomb.svg new file mode 100644 index 0000000..1f51fc8 --- /dev/null +++ b/assets/Tessellations/waterbomb.svg @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + width="3456px" height="6912px" viewBox="0 0 3456 6912" enable-background="new 0 0 3456 6912" xml:space="preserve"> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-2721.869,1193.053l-805.031,805.031 M-2721.869,1193.053l805.031,805.031 M-1111.807,1193.053l-805.031,805.031 + M-1111.807,1193.053l805.032,805.031 M498.256,1193.053l-805.031,805.031 M498.256,1193.053l805.031,805.031 M2108.318,1193.053 + l-805.031,805.031 M2108.318,1193.053l805.033,805.031 M3718.382,1193.053l-805.03,805.031 M3718.382,1193.053l805.031,805.031 + M5328.443,1193.053l-805.03,805.031"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-2721.869,2803.115l-805.031,805.031 M-2721.869,2803.115l805.031,805.031 M-1111.807,2803.115l-805.031,805.031 + M-1111.807,2803.115l805.032,805.031 M498.256,2803.115l-805.031,805.031 M498.256,2803.115l805.031,805.031 M2108.318,2803.115 + l-805.031,805.031 M2108.318,2803.115l805.033,805.031 M3718.382,2803.115l-805.03,805.031 M3718.382,2803.115l805.031,805.031 + M5328.443,2803.115l-805.03,805.031"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3526.9,2803.115l805.031,805.031 M-1916.838,2803.115l-805.031,805.031 M-1916.838,2803.115l805.031,805.031 M-306.775,2803.115 + l-805.032,805.031 M-306.775,2803.115l805.031,805.031 M1303.287,2803.115l-805.031,805.031 M1303.287,2803.115l805.031,805.031 + M2913.352,2803.115l-805.033,805.031 M2913.352,2803.115l805.03,805.031 M4523.413,2803.115l-805.031,805.031 M4523.413,2803.115 + l805.03,805.031"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-2721.869,4413.178l-805.031,805.031 M-2721.869,4413.178l805.031,805.031 M-1111.807,4413.178l-805.031,805.031 + M-1111.807,4413.178l805.032,805.031 M498.256,4413.178l-805.031,805.031 M498.256,4413.178l805.031,805.031 M2108.318,4413.178 + l-805.031,805.031 M2108.318,4413.178l805.033,805.031 M3718.382,4413.178l-805.03,805.031 M3718.382,4413.178l805.031,805.031 + M5328.443,4413.178l-805.03,805.031"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3526.9,1193.053l805.031,805.031 M-1916.838,1193.053l-805.031,805.031 M-1916.838,1193.053l805.031,805.031 M-306.775,1193.053 + l-805.032,805.031 M-306.775,1193.053l805.031,805.031 M1303.287,1193.053l-805.031,805.031 M1303.287,1193.053l805.031,805.031 + M2913.352,1193.053l-805.033,805.031 M2913.352,1193.053l805.03,805.031 M4523.413,1193.053l-805.031,805.031 M4523.413,1193.053 + l805.03,805.031"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3124.385,1998.084L-3526.9,2400.6 M-3124.385,1998.084l402.516,402.516 M-1916.838,2400.6l-402.516,402.516 M-2721.869,2400.6 + l402.515,402.516 M-1514.322,1998.084l402.515,402.516 M-1514.322,1998.084l-402.516,402.516 M-306.775,2400.6l-402.516,402.516 + M-1111.807,2400.6l402.516,402.516 M95.74,1998.084L498.256,2400.6 M95.74,1998.084L-306.775,2400.6 M1303.287,2400.6 + l-402.516,402.516 M498.256,2400.6l402.516,402.516 M1705.803,1998.084l402.516,402.516 M1705.803,1998.084L1303.287,2400.6 + M2913.352,2400.6l-402.517,402.516 M2108.318,2400.6l402.517,402.516 M3315.866,1998.084l402.516,402.516 M3315.866,1998.084 + L2913.352,2400.6 M4523.413,2400.6l-402.517,402.516 M3718.382,2400.6l402.515,402.516 M4925.928,1998.084L4523.413,2400.6 + M4925.928,1998.084l402.516,402.516"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3526.9,2400.6l402.515,402.516 M-2721.869,2400.6l-402.516,402.516 M-2319.354,1998.084l402.516,402.516 M-2319.354,1998.084 + l-402.515,402.516 M-1111.807,2400.6l-402.515,402.516 M-1916.838,2400.6l402.516,402.516 M-709.291,1998.084l402.516,402.516 + M-709.291,1998.084l-402.516,402.516 M498.256,2400.6L95.74,2803.115 M-306.775,2400.6L95.74,2803.115 M900.771,1998.084 + l402.516,402.516 M900.771,1998.084L498.256,2400.6 M2108.318,2400.6l-402.516,402.516 M1303.287,2400.6l402.516,402.516 + M2510.835,1998.084l402.517,402.516 M2510.835,1998.084L2108.318,2400.6 M3718.382,2400.6l-402.516,402.516 M2913.352,2400.6 + l402.515,402.516 M4120.896,1998.084l402.517,402.516 M4120.896,1998.084L3718.382,2400.6 M4523.413,2400.6l402.515,402.516 + M5328.443,2400.6l-402.516,402.516"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3124.385,3608.146l-402.515,402.516 M-3124.385,3608.146l402.516,402.516 M-1916.838,4010.662l-402.516,402.516 + M-2721.869,4010.662l402.515,402.516 M-1514.322,3608.146l402.515,402.516 M-1514.322,3608.146l-402.516,402.516 + M-306.775,4010.662l-402.516,402.516 M-1111.807,4010.662l402.516,402.516 M95.74,3608.146l402.516,402.516 M95.74,3608.146 + l-402.515,402.516 M1303.287,4010.662l-402.516,402.516 M498.256,4010.662l402.516,402.516 M1705.803,3608.146l402.516,402.516 + M1705.803,3608.146l-402.516,402.516 M2913.352,4010.662l-402.517,402.516 M2108.318,4010.662l402.517,402.516 M3315.866,3608.146 + l402.516,402.516 M3315.866,3608.146l-402.515,402.516 M4523.413,4010.662l-402.517,402.516 M3718.382,4010.662l402.515,402.516 + M4925.928,3608.146l-402.515,402.516 M4925.928,3608.146l402.516,402.516"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3526.9,4010.662l402.515,402.516 M-2721.869,4010.662l-402.516,402.516 M-2319.354,3608.146l402.516,402.516 M-2319.354,3608.146 + l-402.515,402.516 M-1111.807,4010.662l-402.515,402.516 M-1916.838,4010.662l402.516,402.516 M-709.291,3608.146l402.516,402.516 + M-709.291,3608.146l-402.516,402.516 M498.256,4010.662L95.74,4413.178 M-306.775,4010.662L95.74,4413.178 M900.771,3608.146 + l402.516,402.516 M900.771,3608.146l-402.516,402.516 M2108.318,4010.662l-402.516,402.516 M1303.287,4010.662l402.516,402.516 + M2510.835,3608.146l402.517,402.516 M2510.835,3608.146l-402.517,402.516 M3718.382,4010.662l-402.516,402.516 M2913.352,4010.662 + l402.515,402.516 M4120.896,3608.146l402.517,402.516 M4120.896,3608.146l-402.515,402.516 M4523.413,4010.662l402.515,402.516 + M5328.443,4010.662l-402.516,402.516"/> +<path fill="none" stroke="#0000FF" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3526.9,4413.178l805.031,805.031 M-1916.838,4413.178l-805.031,805.031 M-1916.838,4413.178l805.031,805.031 M-306.775,4413.178 + l-805.032,805.031 M-306.775,4413.178l805.031,805.031 M1303.287,4413.178l-805.031,805.031 M1303.287,4413.178l805.031,805.031 + M2913.352,4413.178l-805.033,805.031 M2913.352,4413.178l805.03,805.031 M4523.413,4413.178l-805.031,805.031 M4523.413,4413.178 + l805.03,805.031"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-3526.9,3608.146h8855.344"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-3526.9,2803.115h8855.344"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-3526.9,1998.084h8855.344"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-3526.9,4413.178h8855.344"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-2721.869,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-3124.385,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-2319.354,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M4925.928,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M1705.803,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M2108.318,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M2510.835,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M2913.352,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M3315.866,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M3718.382,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M4120.896,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M4523.413,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M1303.287,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M900.771,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M498.256,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M95.74,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-306.775,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-709.291,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-1111.807,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-1514.322,1193.053v4025.156"/> +<path fill="none" stroke="#FF0000" stroke-miterlimit="10" d="M-1916.838,1193.053v4025.156"/> +<path fill="none" stroke="#000000" stroke-width="0.7087" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d=" + M-3526.9,5218.209h8855.344 M5328.443,5218.209V1193.053 M5328.443,1193.053H-3526.9 M-3526.9,1193.053v4025.156"/> +</svg> diff --git a/index.html b/index.html index a79f706..ba60a35 100644 --- a/index.html +++ b/index.html @@ -383,15 +383,15 @@ <div id="threeContainer"></div> <canvas id="gpuMathCanvas"></canvas> <div id="controls"> - <b>Simulation:</b><br/> + <b>Simulation Type:</b><br/> <div class="indent"> <label class="radio"> <input name="simType" value="dynamic" data-toggle="radio" class="custom-radio" type="radio"><span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span> - Dynamic Simulation + Compliant Dynamic Simulation </label> <label class="radio"> <input name="simType" value="static" data-toggle="radio" class="custom-radio" type="radio"><span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span> - Static Simulation (not finished yet) + Compliant Static Simulation (not finished yet) </label> </div><br/> <b>Fold Settings:</b><br/><br/> diff --git a/js/controls.js b/js/controls.js index debd38c..1f2a0e1 100644 --- a/js/controls.js +++ b/js/controls.js @@ -96,6 +96,24 @@ function initControls(globals){ $(e.target).blur(); }); + $("#fileSelector").change(function(e){ + var files = e.target.files; // FileList object + if (files.length < 1) { + console.warn("no files"); + return; + } + + var file = files[0]; + var reader = new FileReader(); + reader.onload = function(){ + return function(e) { + globals.pattern.loadSVG(e.target.result); + } + }(file); + reader.readAsDataURL(file); + + }); + if (globals.colorMode == "color") $("#coloredMaterialOptions").show(); else $("#coloredMaterialOptions").hide(); setRadio("colorMode", globals.colorMode, function(val){ diff --git a/js/globals.js b/js/globals.js index 6c8b9b7..d1cabcc 100644 --- a/js/globals.js +++ b/js/globals.js @@ -40,7 +40,7 @@ function initGlobals(){ density: 1, //import pattern settings - vertTol: 1//vertex merge tolerange + vertTol: 3//vertex merge tolerange }; diff --git a/js/model.js b/js/model.js index 1459fce..6f39469 100644 --- a/js/model.js +++ b/js/model.js @@ -121,6 +121,10 @@ function initModel(globals){ } function buildModel(_faces, _vertices, _allEdges, allCreaseParams){ + if (_vertices.length == 0 || _faces.length == 0 || _allEdges.length == 0) { + console.warn("bad geometry"); + return; + } var _nodes = []; for (var i=0;i<_vertices.length;i++){ diff --git a/js/pattern.js b/js/pattern.js index a7f9b25..311a9c2 100644 --- a/js/pattern.js +++ b/js/pattern.js @@ -20,53 +20,55 @@ function initPattern(globals){ var SVGloader = new THREE.SVGLoader(); - function loadSVG(url, callback){ - SVGloader.load(url, callback, function(){}, function(error){ + function loadSVG(url){ + SVGloader.load(url, function(svg){ + var _$svg = $(svg); + + //format all lines + var $paths = _$svg.children("path"); + $paths.css({fill:"none", 'stroke-width':3, 'stroke-dasharray':"none"}); + + var $outlines = $paths.filter(function(){ + var stroke = $(this).attr("stroke").toLowerCase(); + return stroke == "#000000" || stroke == "#000"; + }); + // $outlines.css({fill:'#ffffff'}); + + var $mountains = $paths.filter(function(){ + var stroke = $(this).attr("stroke").toLowerCase(); + return stroke == "#ff0000" || stroke == "#f00"; + }); + $mountains.css({'stroke-dasharray':'12, 6, 3, 6'}); + + var $valleys = $paths.filter(function(){ + var stroke = $(this).attr("stroke").toLowerCase(); + return stroke == "#0000ff" || stroke == "#00f"; + }); + $valleys.css({'stroke-dasharray':'7, 6, 7, 6'}); + + var $cuts = $paths.filter(function(){ + var stroke = $(this).attr("stroke").toLowerCase(); + return stroke == "#00ff00" || stroke == "#0f0"; + }); + + var $svg = $('<svg version="1.1" viewBox="'+_$svg.attr("viewBox")+'" id="mySVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> </svg>'); + $svg.append($outlines); + $svg.append($mountains); + $svg.append($valleys); + $svg.append($cuts); + + $("#svgViewer").html($svg); + + parseSVG($outlines, $mountains, $valleys, $cuts); + }, + function(){}, + function(error){ alert("Error loading SVG: " + url); console.log(error); }); } - loadSVG("assets/Tessellations/miura-ori.svg", function(svg){ - var _$svg = $(svg); - - //format all lines - var $paths = _$svg.children("path"); - $paths.css({fill:"none", 'stroke-width':3, 'stroke-dasharray':"none"}); - - var $outlines = $paths.filter(function(){ - var stroke = $(this).attr("stroke").toLowerCase(); - return stroke == "#000000" || stroke == "#000"; - }); - // $outlines.css({fill:'#ffffff'}); - - var $mountains = $paths.filter(function(){ - var stroke = $(this).attr("stroke").toLowerCase(); - return stroke == "#ff0000" || stroke == "#f00"; - }); - $mountains.css({'stroke-dasharray':'12, 6, 3, 6'}); - - var $valleys = $paths.filter(function(){ - var stroke = $(this).attr("stroke").toLowerCase(); - return stroke == "#0000ff" || stroke == "#00f"; - }); - $valleys.css({'stroke-dasharray':'7, 6, 7, 6'}); - - var $cuts = $paths.filter(function(){ - var stroke = $(this).attr("stroke").toLowerCase(); - return stroke == "#00ff00" || stroke == "#0f0"; - }); - - var $svg = $('<svg version="1.1" viewBox="'+_$svg.attr("viewBox")+'" id="mySVG" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> </svg>'); - $svg.append($outlines); - $svg.append($mountains); - $svg.append($valleys); - $svg.append($cuts); - - $("#svgViewer").html($svg); - - parseSVG($outlines, $mountains, $valleys, $cuts); - }); + loadSVG("assets/Tessellations/miura-ori.svg"); function parsePath(_verticesRaw, _segmentsRaw, $paths){ for (var i=0;i<$paths.length;i++){ -- GitLab