Spaces:
Running
Running
| import { Vector3 } from "./Vector3"; | |
| class Box3 { | |
| constructor( | |
| public min: Vector3, | |
| public max: Vector3, | |
| ) {} | |
| public contains(point: Vector3) { | |
| return ( | |
| point.x >= this.min.x && | |
| point.x <= this.max.x && | |
| point.y >= this.min.y && | |
| point.y <= this.max.y && | |
| point.z >= this.min.z && | |
| point.z <= this.max.z | |
| ); | |
| } | |
| public intersects(box: Box3) { | |
| return ( | |
| this.max.x >= box.min.x && | |
| this.min.x <= box.max.x && | |
| this.max.y >= box.min.y && | |
| this.min.y <= box.max.y && | |
| this.max.z >= box.min.z && | |
| this.min.z <= box.max.z | |
| ); | |
| } | |
| public size() { | |
| return this.max.subtract(this.min); | |
| } | |
| public center() { | |
| return this.min.add(this.max).divide(2); | |
| } | |
| public expand(point: Vector3) { | |
| this.min = this.min.min(point); | |
| this.max = this.max.max(point); | |
| } | |
| public permute() { | |
| const min = this.min; | |
| const max = this.max; | |
| this.min = new Vector3(Math.min(min.x, max.x), Math.min(min.y, max.y), Math.min(min.z, max.z)); | |
| this.max = new Vector3(Math.max(min.x, max.x), Math.max(min.y, max.y), Math.max(min.z, max.z)); | |
| } | |
| } | |
| export { Box3 }; | |