From cca66b9ec4e494c1d919bff0f71a820d8afab1fa Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:24:48 +0200 Subject: Adding upstream version 1.2.2. Signed-off-by: Daniel Baumann --- .../2geom/tests/bezier-sbasis-transforms.py | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/3rdparty/2geom/tests/bezier-sbasis-transforms.py (limited to 'src/3rdparty/2geom/tests/bezier-sbasis-transforms.py') diff --git a/src/3rdparty/2geom/tests/bezier-sbasis-transforms.py b/src/3rdparty/2geom/tests/bezier-sbasis-transforms.py new file mode 100644 index 0000000..1dc850f --- /dev/null +++ b/src/3rdparty/2geom/tests/bezier-sbasis-transforms.py @@ -0,0 +1,72 @@ +#!/usr/bin/python + +from Numeric import * +from LinearAlgebra import * + +pascals_triangle = [] +rows_done = 0 + +def choose(n, k): + r = 1 + for i in range(1,k+1): + r *= n-k+i + r /= i + return r + +# http://www.research.att.com/~njas/sequences/A109954 +def T(n, k): + return ((-1)**(n+k))*choose(n+k+2, 2*k+2) + +def inver(q): + result = zeros((q+2,q+2)) + q2 = q/2+1 + for i in range(q2): + for j in range(i+1): + val = T(i,j) + result[q/2-j][q/2-i] = val + result[q/2+j+2][q/2+i+2] = val + result[q/2+j+2][q/2-i-1] = -val + if q/2+i+3 < q+2: + result[q/2-j][q/2+i+3] = -val + + for i in range(q+2): + result[q2][i] = [1,-1][(i-q2)%2] + return result + +def simple(q): + result = zeros((q+2,q+2)) + for i in range(q/2+1): + for j in range(q+1): + result[j][i] = choose(q-2*i, j-i) + result[j+1][q-i+1] = choose(q-2*i, j-i) + result[q/2+1][q/2+1] = 1 + return result + +print "The aim of the game is to work out the correct indexing to make the two matrices match :)" + +s = simple(4) +si = floor(inverse(s)+0.5) +print si.astype(Int) +print inver(4) +exit(0) +print "" + +def arrayhtml(a): + s = "" + r,c = a.shape + for i in range(r): + s += ""; + for j in range(c): + s += "" % a[i,j] + s += "" + s += "
%g
" + return s + +for i in [21]:#range(1,13,2): + s = simple(i) + print "

T-1 =

" + print arrayhtml(s) + print "

T =

" + print arrayhtml(floor(inverse(s)+0.5)) + +print "" -- cgit v1.2.3