From 56a3ad373c126da22be05e4c5b64a446c7d7dff0 Mon Sep 17 00:00:00 2001 From: jacksonmj Date: Sun, 9 Jan 2011 10:02:26 +0000 Subject: [PATCH] Fix photon reflection. In cases such as photons travelling horizontally left towards a line with a shallow slope downwards from left to right. Direction map now includes directions parallel to photon velocity in these cases. --- src/powder.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/powder.c b/src/powder.c index 1dd233c2c..112429615 100644 --- a/src/powder.c +++ b/src/powder.c @@ -260,14 +260,14 @@ int try_move(int i, int x, int y, int nx, int ny) static unsigned direction_to_map(float dx, float dy) { - return (dx >= 0) | - (((dx + dy) >= 0) << 1) | /* 567 */ - ((dy >= 0) << 2) | /* 4+0 */ - (((dy - dx) >= 0) << 3) | /* 321 */ - ((dx <= 0) << 4) | - (((dx + dy) <= 0) << 5) | - ((dy <= 0) << 6) | - (((dy - dx) <= 0) << 7); + return (dx >= -0.1) | + (((dx + dy) >= -0.1) << 1) | /* 567 */ + ((dy >= -0.1) << 2) | /* 4+0 */ + (((dy - dx) >= -0.1) << 3) | /* 321 */ + ((dx <= 0.1) << 4) | + (((dx + dy) <= 0.1) << 5) | + ((dy <= 0.1) << 6) | + (((dy - dx) <= 0.1) << 7); } static int is_blocking(int t, int x, int y)