diff --git a/CreasePatternScripts/ReschTess/ReschTess.pde b/CreasePatternScripts/ReschTess/ReschTess.pde new file mode 100644 index 0000000..a507f42 --- /dev/null +++ b/CreasePatternScripts/ReschTess/ReschTess.pde @@ -0,0 +1,46 @@ +import processing.pdf.*; + +float edgeLength = 40; + +void setup() { + + //20in*72dpi= 1440px + size(600, 600, PDF, "resch.pdf"); + background(255); + + pushMatrix(); + translate(edgeLength, edgeLength); + int size = 10; + for (int i=0;i= int(meta[3])) break; @@ -358,6 +359,7 @@ vec3 normalCrossAC = cross(normal, ac)/lengthAC; vec3 normalCrossAB = cross(normal, ab)/lengthAB; force -= anglesDiff[0]*(normalCrossAC - normalCrossAB); + if (u_calcFaceStrain) nodeError += abs((nominalAngles[0]-angles[0])/nominalAngles[0]); force -= anglesDiff[1]*normalCrossAB; force += anglesDiff[2]*normalCrossAC; } else if (faceIndex == 1){ @@ -365,6 +367,7 @@ vec3 normalCrossBC = cross(normal, bc)/lengthBC; force -= anglesDiff[0]*normalCrossAB; force += anglesDiff[1]*(normalCrossAB + normalCrossBC); + if (u_calcFaceStrain) nodeError += abs((nominalAngles[1]-angles[1])/nominalAngles[1]); force -= anglesDiff[2]*normalCrossBC; } else if (faceIndex == 2){ vec3 normalCrossAC = cross(normal, ac)/lengthAC; @@ -372,9 +375,11 @@ force += anglesDiff[0]*normalCrossAC; force -= anglesDiff[1]*normalCrossBC; force += anglesDiff[2]*(normalCrossBC - normalCrossAC); + if (u_calcFaceStrain) nodeError += abs((nominalAngles[2]-angles[2])/nominalAngles[2]); } } + if (u_calcFaceStrain) nodeError /= meta2[1]; vec3 velocity = force*u_dt/mass[0] + lastVelocity; gl_FragColor = vec4(velocity,nodeError); @@ -1197,7 +1202,7 @@
-
Rotate 3D
Grab
+
Rotate
Grab
Control Mode
diff --git a/js/dynamic/dynamicSolver.js b/js/dynamic/dynamicSolver.js index cbe9b84..517c041 100755 --- a/js/dynamic/dynamicSolver.js +++ b/js/dynamic/dynamicSolver.js @@ -183,33 +183,8 @@ function initDynamicSolver(globals){ return avgPosition; } - window.ke = []; - function render(){ - // var vectorLength = 2; - // globals.gpuMath.setProgram("packToBytes"); - // globals.gpuMath.setUniformForProgram("packToBytes", "u_vectorLength", vectorLength, "1f"); - // globals.gpuMath.setUniformForProgram("packToBytes", "u_floatTextureDim", [textureDimCreases, textureDimCreases], "2f"); - // globals.gpuMath.setSize(textureDimCreases*vectorLength, textureDimCreases); - // globals.gpuMath.step("packToBytes", ["u_lastTheta"], "outputBytes"); - // - // if (globals.gpuMath.readyToRead()) { - // var numPixels = nodes.length*vectorLength; - // var height = Math.ceil(numPixels/(textureDimCreases*vectorLength)); - // var pixels = new Uint8Array(height*textureDimCreases*4*vectorLength); - // globals.gpuMath.readPixels(0, 0, textureDimCreases * vectorLength, height, pixels); - // var parsedPixels = new Float32Array(pixels.buffer); - // for (var i=0;iMath.PI-1) { - // console.log(parsedPixels[i+1]);//theta - // } - // - // } - // } else { - // console.log("here"); - // } - var vectorLength = 4; globals.gpuMath.setProgram("packToBytes"); globals.gpuMath.setUniformForProgram("packToBytes", "u_vectorLength", vectorLength, "1f"); @@ -244,7 +219,6 @@ function initDynamicSolver(globals){ colors[3*i+2] = color.b; } } - window.ke.push(globalError); $errorOutput.html((globalError/nodes.length).toFixed(7) + " %"); } else { console.log("shouldn't be here"); @@ -345,6 +319,7 @@ function initDynamicSolver(globals){ gpuMath.setUniformForProgram("velocityCalc", "u_creasePercent", globals.creasePercent, "1f"); gpuMath.setUniformForProgram("velocityCalc", "u_axialStiffness", globals.axialStiffness, "1f"); gpuMath.setUniformForProgram("velocityCalc", "u_faceStiffness", globals.faceStiffness, "1f"); + gpuMath.setUniformForProgram("velocityCalc", "u_calcFaceStrain", globals.calcFaceStrain, "1f"); gpuMath.createProgram("positionCalcVerlet", vertexShader, document.getElementById("positionCalcVerletShader").text); gpuMath.setUniformForProgram("positionCalcVerlet", "u_lastPosition", 0, "1i"); @@ -372,6 +347,7 @@ function initDynamicSolver(globals){ gpuMath.setUniformForProgram("positionCalcVerlet", "u_creasePercent", globals.creasePercent, "1f"); gpuMath.setUniformForProgram("positionCalcVerlet", "u_axialStiffness", globals.axialStiffness, "1f"); gpuMath.setUniformForProgram("positionCalcVerlet", "u_faceStiffness", globals.faceStiffness, "1f"); + gpuMath.setUniformForProgram("positionCalcVerlet", "u_calcFaceStrain", globals.calcFaceStrain, "1f"); gpuMath.createProgram("thetaCalc", vertexShader, document.getElementById("thetaCalcShader").text); gpuMath.setUniformForProgram("thetaCalc", "u_normals", 0, "1i"); diff --git a/js/globals.js b/js/globals.js index f417958..d31b92c 100755 --- a/js/globals.js +++ b/js/globals.js @@ -12,6 +12,7 @@ function initGlobals(){ //view colorMode: "color", + calcFaceStrain: false, color1: "ec008b", color2: "dddddd", edgesVisible: true, diff --git a/js/saveSTL.js b/js/saveSTL.js index e25c2fd..58bf4a0 100755 --- a/js/saveSTL.js +++ b/js/saveSTL.js @@ -132,8 +132,8 @@ function saveOBJ(){ obj += "#e " + (edge[0]+1) + " " + (edge[1]+1) + " "; if (fold.edges_assignment[i] == "F") obj += 1; else if (fold.edges_assignment[i] == "B") obj += 0; - else if (fold.edges_assignment[i] == "M") obj += 2; - else if (fold.edges_assignment[i] == "V") obj += 3; + else if (fold.edges_assignment[i] == "M") obj += 3; + else if (fold.edges_assignment[i] == "V") obj += 2; else { console.log("don't know how to convert type " + fold.edges_assignment[i]); obj += 0;