""" * 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 """