[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Circular number system?



On Mon, Feb 23, 2009 at 7:36 AM, Jussi Toivola <jtoivola@xxxxxxxxx> wrote:
> Hmm... I'd try something like this:
>
> print 13 % 12
> . . . yields 1.
>
> print -1 % 12
> . . . yields 11.
>
> print 11 % 12 > 1 % 12
> . . . asks if 11 is left of 1 and returns True.
>
> print ( 315 + 360 ) % 360
> . . . yields 315
>
> print 666 % 12
> . . . yields 6...  :o
>
That works for numbers clamped between 0 and N, what about ones that are
clamped between N1 and N2?

class Ring(object):

 def __init__(self, low, upper):
  self._offset = low
  self._diff = up - low

 def clamp(self, value):
  shifted = value - self._offset
  return shifted % self._diff + self._offset

The above takes into account your suggestion but allows offsets other than 0.