Skip to content

Commit 387fa43

Browse files
committed
Prevent division by zero
1 parent 9086d5a commit 387fa43

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/raycasting/intersectOctree.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,17 @@ export function intersectOctree(octree: Node, ray: Ray,
3535
// Reset all flags.
3636
flags.value = 0;
3737

38-
// Handle rays with negative directions.
38+
// Handle rays with negative directions and prevent division by zero.
3939
if(direction.x < 0.0) {
4040

4141
origin.x = dimensions.x - origin.x;
4242
direction.x = -direction.x;
4343
flags.value |= 4;
4444

45+
} else if(direction.x === 0.0) {
46+
47+
direction.x = 1e-16;
48+
4549
}
4650

4751
if(direction.y < 0.0) {
@@ -50,6 +54,10 @@ export function intersectOctree(octree: Node, ray: Ray,
5054
direction.y = -direction.y;
5155
flags.value |= 2;
5256

57+
} else if(direction.y === 0.0) {
58+
59+
direction.y = 1e-16;
60+
5361
}
5462

5563
if(direction.z < 0.0) {
@@ -58,6 +66,10 @@ export function intersectOctree(octree: Node, ray: Ray,
5866
direction.z = -direction.z;
5967
flags.value |= 1;
6068

69+
} else if(direction.z === 0.0) {
70+
71+
direction.z = 1e-16;
72+
6173
}
6274

6375
// Improve IEEE double stability.

0 commit comments

Comments
 (0)