1 |
needGL() |
needGL() |
2 |
|
|
3 |
|
from gzz.vob import * |
4 |
|
from java.awt import Color |
5 |
|
|
6 |
from gzz.gfx.gl import GLVobCoorder, GL |
from gzz.gfx.gl import GLVobCoorder, GL |
7 |
|
from gzz.gfx.gl import GL, GLRen, GLCache, PaperMill |
8 |
from jarray import array, zeros |
from jarray import array, zeros |
9 |
|
from test.tools.gfx import * |
10 |
|
|
11 |
|
vs = getvs() |
12 |
|
c = vs.coords |
13 |
|
|
14 |
|
interp = zeros(1000, 'i') |
15 |
|
interp[0] = 999 |
16 |
|
vs1 = getvs() |
17 |
|
c1 = vs1.coords |
18 |
|
vs2 = getvs() |
19 |
|
c2 = vs2.coords |
20 |
|
|
21 |
def checkTrans(c, cs, srclist, dstlist, delta=0): |
def checkTrans(vs, cs, srclist, dstlist, delta=0, alsoGL = 1): |
22 |
src = array(srclist, 'f') |
src = array(srclist, 'f') |
23 |
dst = zeros(len(src), 'f') |
dst = zeros(len(src), 'f') |
24 |
c.transformPoints3(cs, src, dst) |
vs.coords.transformPoints3(cs, src, dst) |
25 |
for i in range(0, len(src)): |
for i in range(0, len(src)): |
26 |
failIf(abs(dst[i]-dstlist[i]) > delta, str([srclist, dstlist, dst, i, dst[i], dstlist[i]])) |
failIf(abs(dst[i]-dstlist[i]) > delta, str([srclist, dstlist, dst, i, dst[i], dstlist[i]])) |
27 |
|
if alsoGL: |
28 |
|
for i in range(0, len(src), 3): |
29 |
|
vs.map.clear() |
30 |
|
vs.map.put(SolidBgVob(Color.red)) |
31 |
|
d = """ |
32 |
|
PointSize 3 |
33 |
|
Color 1 1 1 |
34 |
|
Begin POINTS |
35 |
|
Vertex %s %s %s |
36 |
|
End |
37 |
|
""" % (src[i], src[i+1], src[i+2]) |
38 |
|
print "TEST: ",d |
39 |
|
vs.map.put(GLCache.getCallListCoorded(d), cs) |
40 |
|
render(vs) |
41 |
|
checkNotAvgColor( |
42 |
|
int(dstlist[i])-1, int(dstlist[i+1])-1, |
43 |
|
3, 3, (255, 0, 0), delta=50) |
44 |
|
|
45 |
def checkInterp(c1, c2, i, fract, cs, srclist, dstlist, delta=0): |
|
46 |
|
|
47 |
|
def checkInterp(vs1, vs2, i, fract, cs, srclist, dstlist, delta=0): |
48 |
src = array(srclist, 'f') |
src = array(srclist, 'f') |
49 |
dst = zeros(len(src), 'f') |
dst = zeros(len(src), 'f') |
50 |
failUnless(c1.transformPoints3_interp(i, c2, fract, 0, cs, src, dst)) |
failUnless(vs1.coords.transformPoints3_interp(i, vs2.coords, |
51 |
|
fract, 0, cs, src, dst)) |
52 |
for i in range(0, len(src)): |
for i in range(0, len(src)): |
53 |
failIf(abs(dst[i]-dstlist[i]) > delta, str([srclist, dstlist, dst, i, dst[i], dstlist[i]])) |
failIf(abs(dst[i]-dstlist[i]) > delta, str([srclist, dstlist, dst, i, dst[i], dstlist[i]])) |
54 |
|
|
55 |
|
|
56 |
def testTransform(): |
def testTransform(): |
|
c = GLVobCoorder() |
|
57 |
|
|
58 |
cs1 = c.ortho(0, 5, 10, 15, 0.5, 1) |
cs1 = c.ortho(0, 5, 10, 15, 0.5, 1) |
59 |
checkTrans(c, cs1, [0, 0, 0, 1, 1, 1], [10, 15, 5, 10.5, 16, 6]) |
checkTrans(vs, cs1, [0, 0, 0, 1, 1, 1], [10, 15, 5, 10.5, 16, 6]) |
60 |
|
|
61 |
cs2 = c.scale(0, 2, 3, 4) |
cs2 = c.scale(0, 2, 3, 4) |
62 |
checkTrans(c, cs2, [0, 0, 0, 1, 1, 1], [0, 0, 0, 2, 3, 4]) |
checkTrans(vs, cs2, [0, 0, 0, 1, 1, 1], [0, 0, 0, 2, 3, 4]) |
63 |
|
|
64 |
cs3 = c.distort(0, 0, 0, 0.1, 0.1, 20, 5) |
cs3 = c.distort(0, 0, 0, 0.1, 0.1, 20, 5) |
65 |
checkTrans(c, cs3, [0, 0, 0, 0.001, 0.001, 1], [0, 0, 0, 0.02, 0.02, 1], delta=0.00001) |
checkTrans(vs, cs3, [0, 0, 0, 0.001, 0.001, 1], [0, 0, 0, 0.02, 0.02, 1], delta=0.00001, alsoGL = 0) |
66 |
|
|
67 |
cs = c.concat(cs1, cs2) |
cs = c.concat(cs1, cs2) |
68 |
checkTrans(c, cs, [0, 0, 0, 1, 1, 1, 2, 2, 2], [10, 15, 5, 11, 18, 9, 12, 21, 13]) |
checkTrans(vs, cs, [0, 0, 0, 1, 1, 1, 2, 2, 2], [10, 15, 5, 11, 18, 9, 12, 21, 13]) |
69 |
|
|
70 |
def checkInverse(c, cs): |
def checkInverse(c, cs): |
71 |
# unit cube |
# unit cube |
125 |
|
|
126 |
checkInverse(c, cs_dist) |
checkInverse(c, cs_dist) |
127 |
|
|
|
interp = zeros(1000, 'i') |
|
|
interp[0] = 999 |
|
|
c1 = GLVobCoorder() |
|
|
c2 = GLVobCoorder() |
|
|
|
|
128 |
def testInterpolateTranslation(): |
def testInterpolateTranslation(): |
129 |
|
|
130 |
cs_trans1 = c1.translate(0, 10, 10) |
cs_trans1 = c1.translate(0, 10, 10) |
131 |
cs_trans2 = c2.translate(0, 100, 20) |
cs_trans2 = c2.translate(0, 100, 20) |
132 |
|
|
133 |
interp[cs_trans1] = cs_trans2 |
interp[cs_trans1] = cs_trans2 |
134 |
checkInterp(c1, c2, interp, .5, cs_trans1, |
checkInterp(vs1, vs2, interp, .5, cs_trans1, |
135 |
[0, 0, 0], |
[0, 0, 0], |
136 |
[55, 15, 0] |
[55, 15, 0] |
137 |
) |
) |
141 |
cs_anchor = c1.translate(0, 10, 0) |
cs_anchor = c1.translate(0, 10, 0) |
142 |
cs_b1 = c1.buoyOnCircle(0, cs_anchor, 0, 0, 20, -20, 0, 1) |
cs_b1 = c1.buoyOnCircle(0, cs_anchor, 0, 0, 20, -20, 0, 1) |
143 |
|
|
144 |
checkTrans(c1, cs_b1, |
checkTrans(vs1, cs_b1, |
145 |
[0, 0, 0], |
[0, 0, 0], |
146 |
[20, 0, 0], |
[20, 0, 0], |
147 |
.1) |
.1) |
149 |
cs_b2t = c2.affineCoordsys(0, 0, 200, 200, 1, 0, 0, 1) |
cs_b2t = c2.affineCoordsys(0, 0, 200, 200, 1, 0, 0, 1) |
150 |
interp[cs_b1] = cs_b2t |
interp[cs_b1] = cs_b2t |
151 |
|
|
152 |
checkInterp(c1, c2, interp, .5, cs_b1, |
checkInterp(vs1, vs2, interp, .5, cs_b1, |
153 |
[0, 0, 0], |
[0, 0, 0], |
154 |
[110, 100, 0], |
[110, 100, 0], |
155 |
.1) |
.1) |
156 |
|
|
157 |
|
def testNadir(): |
158 |
|
|
159 |
|
cs_nadir = c1.translate(0, 500, 1000) |
160 |
|
cs_center = c1.translate(0, 500, 0) |
161 |
|
cs_rot = c1.nadirOrigin(cs_center, cs_nadir) |
162 |
|
|
163 |
|
checkTrans(vs1, cs_rot, |
164 |
|
[0, 0, 0, 0, 10, 0], |
165 |
|
[500, 0, 0, 500, 10, 0], |
166 |
|
.1) |
167 |
|
|
168 |
|
c1.setTranslateParams(cs_center, 0, 1000) |
169 |
|
|
170 |
|
checkTrans(vs1, cs_rot, |
171 |
|
[0, 0, 0, 0, 10, 0], |
172 |
|
[0, 1000, 0, 10, 1000, 0], |
173 |
|
.1) |
174 |
|
|
175 |
|
|
176 |
|
|
177 |
|
|
178 |
|
|
179 |
|
|
180 |
|
# : vim: set syntax=python : |