From 7ad1b7efabea1349107669a432e6c88305f8d825 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Sat, 1 Jan 2022 21:21:52 +0000 Subject: Implement basic ray tracing --- src/Geometry.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/Geometry.ts (limited to 'src/Geometry.ts') diff --git a/src/Geometry.ts b/src/Geometry.ts new file mode 100644 index 0000000..4fcc11b --- /dev/null +++ b/src/Geometry.ts @@ -0,0 +1,31 @@ +import {Colour} from './Colour'; +import {Material} from './Material'; +import {Vector} from './Vector'; + +export class Sphere { + constructor( + readonly centerPoint: Vector, + readonly radius: number, + readonly material: Material + ) {} +} + +export class Plane { + constructor( + readonly yPos: number, + readonly width: number, // How far the plane extends into x/-x from 0 + readonly zStartPos: number, + readonly zEndPos: number, + readonly checkerboardScale: number + ) {} + + getMaterialAtPoint(x: number, z: number): Material { + let colour: Colour; + if ((Math.round(this.checkerboardScale * x) + Math.round(this.checkerboardScale * z)) & 1) { + colour = new Colour(15, 15, 15); + } else { + colour = new Colour(200, 200, 200); + } + return new Material(colour, 1, 0, 0, 0); + } +} -- cgit v1.2.3