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