1ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang""" 2ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Copyright (c) 2012 The WebM project authors. All Rights Reserved. 3ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 4ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Use of this source code is governed by a BSD-style license 5ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * that can be found in the LICENSE file in the root of the source 6ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * tree. An additional intellectual property rights grant can be found 7ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * in the file PATENTS. All contributing project authors may 8ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * be found in the AUTHORS file in the root of the source tree. 9ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang""" 10ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#!/usr/bin/env python 11ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangimport sys,string,os,re,math,numpy 12ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangscale = 2**16 13ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangdef dist(p1,p2): 14ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang x1,y1 = p1 15ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang x2,y2 = p2 16ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang if x1==x2 and y1==y2 : 17ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang return 1.0 18ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang return 1/ math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) 19ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 20ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangdef gettaps(p): 21ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang def l(b): 22ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang return int(math.floor(b)) 23ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang def h(b): 24ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang return int(math.ceil(b)) 25ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang def t(b,p,s): 26ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang return int((scale*dist(b,p)+s/2)/s) 27ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang r,c = p 28ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ul=[l(r),l(c)] 29ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ur=[l(r),h(c)] 30ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ll=[h(r),l(c)] 31ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang lr=[h(r),h(c)] 32ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang sum = dist(ul,p)+dist(ur,p)+dist(ll,p)+dist(lr,p) 33ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang t4 = scale - t(ul,p,sum) - t(ur,p,sum) - t(ll,p,sum); 34ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang return [[ul,t(ul,p,sum)],[ur,t(ur,p,sum)], 35ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang [ll,t(ll,p,sum)],[lr,t4]] 36ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 37ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangdef print_mb_taps(angle,blocksize): 38ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang theta = angle / 57.2957795; 39ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang affine = [[math.cos(theta),-math.sin(theta)], 40ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang [math.sin(theta),math.cos(theta)]] 41ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang radius = (float(blocksize)-1)/2 42ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang print " // angle of",angle,"degrees" 43ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for y in range(blocksize) : 44ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for x in range(blocksize) : 45ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang r,c = numpy.dot(affine,[y-radius, x-radius]) 46ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang tps = gettaps([r+radius,c+radius]) 47ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for t in tps : 48ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang p,t = t 49ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang tr,tc = p 50ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang print " %2d, %2d, %5d, " % (tr,tc,t,), 51ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang print " // %2d,%2d " % (y,x) 52ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 53ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangi=float(sys.argv[1]) 54ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangwhile i <= float(sys.argv[2]) : 55ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang print_mb_taps(i,float(sys.argv[4])) 56ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang i=i+float(sys.argv[3]) 57ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang""" 58ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 59ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangtaps = [] 60ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangpt=dict() 61ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangptr=dict() 62ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfor y in range(16) : 63ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for x in range(16) : 64ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang r,c = numpy.dot(affine,[y-7.5, x-7.5]) 65ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang tps = gettaps([r+7.5,c+7.5]) 66ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang j=0 67ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for tp in tps : 68ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang p,i = tp 69ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang r,c = p 70ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang pt[y,x,j]= [p,i] 71ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang try: 72ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ptr[r,j,c].append([y,x]) 73ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang except: 74ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ptr[r,j,c]=[[y,x]] 75ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang j = j+1 76ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 77ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfor key in sorted(pt.keys()) : 78ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang print key,pt[key] 79ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 80ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuanglr = -99 81ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuanglj = -99 82ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuanglc = 0 83ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 84ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangshuf="" 85ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangmask="" 86ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfor r,j,c in sorted(ptr.keys()) : 87ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for y,x in ptr[r,j,c] : 88ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang if lr != r or lj != j : 89ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang print "shuf_"+str(lr)+"_"+str(lj)+"_"+shuf.ljust(16,"0"), lc 90ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang shuf="" 91ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang lc = 0 92ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for i in range(lc,c-1) : 93ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang shuf = shuf +"0" 94ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang shuf = shuf + hex(x)[2] 95ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang lc =c 96ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang break 97ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang lr = r 98ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang lj = j 99ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang# print r,j,c,ptr[r,j,c] 100ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang# print 101ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 102ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfor r,j,c in sorted(ptr.keys()) : 103ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang for y,x in ptr[r,j,c] : 104ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang print r,j,c,y,x 105ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang break 106ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang""" 107