summaryrefslogtreecommitdiff log msg author committer range
diff options
 context: 12345678910152025303540 space: includeignore mode: unifiedssdiffstat only
author committer Peter Hutterer 2011-04-20 11:49:57 +1000 Peter Hutterer 2011-04-21 13:48:41 +1000 df90db892d16143742eb3c09e048f5b76457a62e (patch) 50626f57c749f3d6c4918127e102fc2daf818668 7513190ec7bc08db1629b04d3f88f86ea2b1588e (diff)
dix: document DoGetDirection's maths
This is the best explanation I can come up with, but it seems to hold true for my example values. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Simon Thum <simon.thum@gmx.de>
-rw-r--r--dix/ptrveloc.c12
1 files changed, 10 insertions, 2 deletions
 diff --git a/dix/ptrveloc.c b/dix/ptrveloc.cindex 3bf871658..ab2bca766 100644--- a/dix/ptrveloc.c+++ b/dix/ptrveloc.c@@ -483,8 +483,16 @@ DoGetDirection(int dx, int dy){ #else r = atan2(dy, dx); #endif- /* find direction. We avoid r to become negative,- * since C has no well-defined modulo for such cases. */+ /* find direction.+ *+ * Add 360° to avoid r become negative since C has no well-defined+ * modulo for such cases. Then divide by 45° to get the octant number,+ * e.g. 0 <= r <= 1 is [0-45]°+ * 1 <= r <= 2 is [45-90]°+ * etc.+ * But we add extra 90° to match up with our N, S, etc. defines up+ * there, rest stays the same.+ */ r = (r+(M_PI*2.5))/(M_PI/4); /* this intends to flag 2 directions (45 degrees each), * except on very well-aligned mickeys. */