]> gitweb.ps.run Git - cloth_sim/blobdiff - Scripts/cloth.js
restructure
[cloth_sim] / Scripts / cloth.js
diff --git a/Scripts/cloth.js b/Scripts/cloth.js
deleted file mode 100644 (file)
index db07ac3..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-const MASS = 0.1;\r
-\r
-class Constraint {\r
-  constructor(p1, p2, distance) {\r
-    this.p1 = p1;\r
-    this.p2 = p2;\r
-    this.distance = distance;\r
-  }\r
-}\r
-\r
-class Particle {\r
-  constructor(x, y, z, mass) {\r
-    this.position = new THREE.Vector3(x, y, z);\r
-    this.previous = new THREE.Vector3(x, y, z);\r
-    this.acceleration = new THREE.Vector3(0, 0, 0);\r
-    this.mass = mass;\r
-  }\r
-  addForce(force) {\r
-\r
-  }\r
-  verlet(dt) {\r
-\r
-  }\r
-}\r
-\r
-class Cloth {\r
-  constructor(width, height, numPointsWidth, numPointsHeight) {\r
-    this.width = width;\r
-    this.height = height;\r
-    this.numPointsWidth = numPointsWidth;\r
-    this.numPointsHeight = numPointsHeight;\r
-\r
-    /**\r
-     * distance between two vertices horizontally/vertically\r
-     * divide by the number of points minus one\r
-     * because there are (n - 1) lines between n vertices\r
-     */\r
-    let stepWidth = width / (numPointsWidth - 1);\r
-    let stepHeight = height / (numPointsHeight - 1);\r
-\r
-    /**\r
-     * iterate over the number of vertices in x/y axis\r
-     * and add a new Particle to "particles"\r
-     */\r
-    this.particles = [];\r
-    for (let y = 0; y < numPointsHeight; y++) {\r
-      for (let x = 0; x < numPointsWidth; x++) {\r
-        this.particles.push(\r
-          new Particle(\r
-            (x - ((numPointsWidth-1)/2)) * stepWidth,\r
-            height - (y + ((numPointsHeight-1)/2)) * stepHeight,\r
-            0,\r
-            MASS)\r
-        );\r
-      }\r
-    }\r
-\r
-    const REST_DIST_X = width / (numPointsWidth-1);\r
-    const REST_DIST_Y = height / (numPointsHeight-1);\r
-\r
-    /**\r
-     * generate constraints (springs)\r
-     */\r
-    this.constraints = [];\r
-    for (let y = 0; y < numPointsHeight; y++) {\r
-      for (let x = 0; x < numPointsWidth; x++) {\r
-        if (x < numPointsWidth-1) {\r
-          this.constraints.push(new Constraint(\r
-            this.particles[this.getVertexIndex(x, y)],\r
-            this.particles[this.getVertexIndex(x+1, y)],\r
-            REST_DIST_X\r
-          ));\r
-        }\r
-        if (x < numPointsWidth-1) {\r
-          this.constraints.push(new Constraint(\r
-            this.particles[this.getVertexIndex(x, y)],\r
-            this.particles[this.getVertexIndex(x, y+1)],\r
-            REST_DIST_Y\r
-          ));\r
-        }\r
-      }\r
-    }\r
-  }\r
-  generateGeometry() {\r
-    const geometry = new THREE.BufferGeometry();\r
-\r
-    const vertices = [];\r
-    const normals = [];\r
-    const indices = [];\r
-\r
-    for (let particle of this.particles) {\r
-      vertices.push(\r
-        particle.position.x,\r
-        particle.position.y,\r
-        particle.position.z);\r
-    }\r
-\r
-    const numPointsWidth = this.numPointsWidth;\r
-    const numPointsHeight = this.numPointsHeight;\r
-\r
-    /**\r
-     * generate faces based on 4 vertices\r
-     * and 6 springs each\r
-     */\r
-    for (let y = 0; y < numPointsHeight - 1; y++) {\r
-      for (let x = 0; x < numPointsWidth - 1; x++) {\r
-        indices.push(\r
-          this.getVertexIndex(x, y),\r
-          this.getVertexIndex(x+1, y),\r
-          this.getVertexIndex(x+1, y+1)\r
-        );\r
-        indices.push(\r
-          this.getVertexIndex(x, y),\r
-          this.getVertexIndex(x+1, y+1),\r
-          this.getVertexIndex(x, y+1)\r
-        );\r
-      }\r
-    }\r
-\r
-    geometry.setIndex(indices);\r
-    geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));\r
-    //geometry.setAttribute('normal', new THREE.Float32BufferAttribute(normals, 3));\r
-    geometry.computeBoundingSphere();\r
-    geometry.computeVertexNormals();\r
-\r
-    return geometry;\r
-  }\r
-  updateGeometry(geometry) {\r
-\r
-  }\r
-  satisfyConstraints() {\r
-\r
-  }\r
-  simulate() {\r
-\r
-  }\r
-  /**\r
-   * helper function to calculate index of vertex\r
-   * in "vertices" array based on its x and y positions\r
-   * in the mesh\r
-   * @param {number} x - x index of vertex\r
-   * @param {number} y - y index of vertex\r
-   */\r
-  getVertexIndex(x, y) {\r
-    return y * this.numPointsWidth + x;\r
-  }\r
-}
\ No newline at end of file