Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Feb 2007 11:10:57 -0600 (CST)
From:      Stephen Montgomery-Smith <stephen@math.missouri.edu>
To:        Daniel Eischen <deischen@freebsd.org>
Cc:        "Eugene M. Kim" <freebsd.org@ab.ote.we.lv>, hackers@freebsd.org
Subject:   Re: sin()/cos()/tan() for kernel code?  '_ 'a
Message-ID:  <20070211110815.O62469@math.missouri.edu>
In-Reply-To: <Pine.GSO.4.64.0702110941580.19880@sea.ntplx.net>
References:  <45CED641.7020608@ab.ote.we.lv> <Pine.GSO.4.64.0702110941580.19880@sea.ntplx.net>

next in thread | previous in thread | raw e-mail | index | archive | help


On Sun, 11 Feb 2007, Daniel Eischen wrote:

> On Sun, 11 Feb 2007, Eugene M. Kim wrote:
>
>> Hello all,
>> 
>> I am writing a mouse device driver for my Wacom tablet (Intuos 2 9x12).
>> The tablet comes with a mouse and I managed to get valid coordinate data
>> from the device.  However, unlike usual mice, the coordinate system is
>> tied not to the orientation of the mouse itself, but to the tablet,
>> which acts much like a "mouse pad".  So, for example, if I rotate the
>> mouse 30 degrees to the left and move it left and right, the mouse
>> cursor would move not horizontally, but to 2- or 8-o'clock.
>> 
>> Fortunately the mouse also provides orientation data along with
>> coordinate data, so the correct cursor movement could be calculated from
>> it.  The problem: The calculation needs trigonometry, but there seems to
>> be no math library support in the kernel (I ran "grep -w cos" on the
>> -CURRENT source tree, which turned nothing up).
>> 
>> Does anyone have an idea on how to do this?
>
> Can't you do this in userland?  Teach moused?

Since you will only need sin and cos evaluated to the nearest degree, if 
that, I suggest a simple look up table.  There is also something called 
the CORDIC method, I think, but I suspect that the look up table will be 
so much easier to program, and negligable extra space overhead.

Stephen




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070211110815.O62469>