]> gitweb.ps.run Git - cloth_sim/blobdiff - Scripts/main.js
Basic Three.js Setup
[cloth_sim] / Scripts / main.js
diff --git a/Scripts/main.js b/Scripts/main.js
new file mode 100644 (file)
index 0000000..f395b6c
--- /dev/null
@@ -0,0 +1,70 @@
+function init() {\r
+  class Point {\r
+    constructor(x, y) {\r
+      this.x = x;\r
+      this.y = y;\r
+    }\r
+\r
+    add(that) {\r
+      return new Point(\r
+        this.x + that.x,\r
+        this.y + that.y\r
+      );\r
+    }\r
+\r
+    sub(that) {\r
+      return new Point(\r
+        this.x - that.x,\r
+        this.y - that.y\r
+      );\r
+    }\r
+\r
+    dist(that) {\r
+      let a = this.x - that.x;\r
+      let b = this.y - that.y;\r
+      return Math.sqrt(a * a + b * b)\r
+    }\r
+  }\r
+\r
+  let mousePos = new Point();\r
+\r
+  const scene = new THREE.Scene();\r
+  const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);\r
+\r
+  const renderer = new THREE.WebGLRenderer();\r
+  renderer.setSize(window.innerWidth, window.innerHeight - 200);\r
+  document.getElementById("threejscontainer").appendChild(renderer.domElement);\r
+\r
+  const directionalLight = new THREE.DirectionalLight(0xffffff, 1);\r
+  scene.add(directionalLight);\r
+\r
+  const geometry = new THREE.BoxGeometry();\r
+  const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });\r
+  const cube = new THREE.Mesh(geometry, material);\r
+  scene.add(cube);\r
+\r
+  camera.position.z = 5;\r
+\r
+  function animate(dt) {\r
+    requestAnimationFrame(animate);\r
+    renderer.render(scene, camera);\r
+  }\r
+\r
+  let canvas = document.getElementsByTagName("canvas")[0];\r
+  let resize = function () {\r
+    w = window.innerWidth;\r
+    h = window.innerHeight - 200;\r
+    canvas.width = w;\r
+    canvas.height = h;\r
+  }\r
+  window.onresize = resize;\r
+  resize();\r
+  if (canvas.getContext) {\r
+    ctx = canvas.getContext('2d');\r
+    animate(performance.now());\r
+  }\r
+  canvas.onmousemove = (evt) => {\r
+    mousePos.x = evt.clientX;\r
+    mousePos.y = evt.clientY;\r
+  };\r
+}
\ No newline at end of file