text: """
   *  Copyright (c) 2012 The WebM project authors. All Rights Reserved.
   *
   *  Use of this source code is governed by a BSD-style license
   *  that can be found in the LICENSE file in the root of the source
   *  tree. An additional intellectual property rights grant can be found
   *  in the file PATENTS.  All contributing project authors may
   *  be found in the AUTHORS file in the root of the source tree.
  """
  #!/usr/bin/env python
  import sys,string,os,re,math,numpy
  scale = 2**16
  def dist(p1,p2):
    x1,y1 = p1
    x2,y2 = p2
    if x1==x2 and y1==y2 :
      return 1.0 
    return 1/ math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
  
  def gettaps(p):
    def l(b):
      return int(math.floor(b))
    def h(b):
      return int(math.ceil(b))
    def t(b,p,s):
      return int((scale*dist(b,p)+s/2)/s)
    r,c = p
    ul=[l(r),l(c)]
    ur=[l(r),h(c)]
    ll=[h(r),l(c)]
    lr=[h(r),h(c)]
    sum = dist(ul,p)+dist(ur,p)+dist(ll,p)+dist(lr,p)
    t4 = scale - t(ul,p,sum) - t(ur,p,sum) - t(ll,p,sum);
    return [[ul,t(ul,p,sum)],[ur,t(ur,p,sum)],
            [ll,t(ll,p,sum)],[lr,t4]]
  
  def print_mb_taps(angle,blocksize):
    theta = angle / 57.2957795;
    affine = [[math.cos(theta),-math.sin(theta)],
              [math.sin(theta),math.cos(theta)]]
    radius = (float(blocksize)-1)/2
    print " // angle of",angle,"degrees"
    for y in range(blocksize) :
      for x in range(blocksize) :
        r,c = numpy.dot(affine,[y-radius, x-radius])
        tps = gettaps([r+radius,c+radius])
        for t in tps :
          p,t = t
          tr,tc = p
          print " %2d, %2d, %5d, " % (tr,tc,t,),
        print " // %2d,%2d " % (y,x)
  
  i=float(sys.argv[1])
  while  i <= float(sys.argv[2]) :
    print_mb_taps(i,float(sys.argv[4]))
    i=i+float(sys.argv[3])
  """
  
  taps = []
  pt=dict()
  ptr=dict()
  for y in range(16) :
    for x in range(16) :
      r,c = numpy.dot(affine,[y-7.5, x-7.5])
      tps = gettaps([r+7.5,c+7.5])
      j=0
      for tp in tps : 
        p,i = tp
        r,c = p
        pt[y,x,j]= [p,i]
        try: 
          ptr[r,j,c].append([y,x])
        except:
          ptr[r,j,c]=[[y,x]]
        j = j+1 
  
  for key in sorted(pt.keys()) :
    print key,pt[key]
  
  lr = -99
  lj = -99 
  lc = 0
  
  shuf=""
  mask=""
  for r,j,c in sorted(ptr.keys()) :
    for y,x in ptr[r,j,c] :
      if lr != r or lj != j :
        print "shuf_"+str(lr)+"_"+str(lj)+"_"+shuf.ljust(16,"0"), lc
        shuf=""
        lc = 0
      for i in range(lc,c-1) :
        shuf = shuf +"0"
      shuf = shuf + hex(x)[2]
      lc =c
      break
    lr = r
    lj = j
  #  print r,j,c,ptr[r,j,c]    
  #  print 
  
  for r,j,c in sorted(ptr.keys()) :
    for y,x in ptr[r,j,c] :
      print r,j,c,y,x 
      break
  """
  