diff --git a/src/geometry/Shape2D.ts b/src/geometry/Shape2D.ts new file mode 100644 index 0000000..8c860d0 --- /dev/null +++ b/src/geometry/Shape2D.ts @@ -0,0 +1,8 @@ +import Vector2D from "./Vector2D"; + +export default class Shape2D { + constructor( + public position: Vector2D, + public vertices: Float32Array, + ) {} +} \ No newline at end of file diff --git a/src/geometry/Triangle.ts b/src/geometry/Triangle.ts new file mode 100644 index 0000000..687a7e8 --- /dev/null +++ b/src/geometry/Triangle.ts @@ -0,0 +1,10 @@ +import Shape2D from "./Shape2D"; +import Vector2D from "./Vector2D"; + +export default class Triangle extends Shape2D { + constructor( + public position: Vector2D, + ) { + super(position, new Float32Array([0.0, -0.5, 0.3, 0.5, -0.3, 0.5])); + } +} \ No newline at end of file diff --git a/src/geometry/Vector2D.ts b/src/geometry/Vector2D.ts new file mode 100644 index 0000000..8a5e0e2 --- /dev/null +++ b/src/geometry/Vector2D.ts @@ -0,0 +1,11 @@ +export default class Vector2D { + constructor( + public x: number, + public y: number, + ) {} + + add(other: Vector2D) { + this.x += other.x; + this.y += other.y; + } +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 3bc574b..14bf698 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,7 +5,10 @@ import vsSource from "./shaders/basic.vert?raw"; import fsSource from "./shaders/basic.frag?raw"; import { drawVertex, loadBuffer, loadProgram, loadShader } from "./shaderUtils"; -import triangle from "./shapes/triangle.json"; +import Triangle from "./geometry/Triangle"; +import Vector2D from "./geometry/Vector2D"; + +const triangle = new Triangle(new Vector2D(0, 0)); function render() { const canvas = document.querySelector("#canvas"); diff --git a/src/shapes/triangle.json b/src/shapes/triangle.json deleted file mode 100644 index e24a600..0000000 --- a/src/shapes/triangle.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "triangle", - "vertices": [ - 0.0, -0.5, - 0.3, 0.5, - -0.3, 0.5 - ] -} \ No newline at end of file