Parent Directory
|
Revision Log
test for generation of gmsh script added
1 | # $Id: run_visualization_interface.py 798 2006-08-04 01:05:36Z gross $ |
2 | |
3 | __copyright__=""" Copyright (c) 2006 by ACcESS MNRF |
4 | http://www.access.edu.au |
5 | Primary Business: Queensland, Australia""" |
6 | __license__="""Licensed under the Open Software License version 3.0 |
7 | http://www.opensource.org/licenses/osl-3.0.php""" |
8 | |
9 | import os |
10 | import sys |
11 | import unittest |
12 | import math |
13 | import numarray |
14 | from esys.pycad import * |
15 | from esys.pycad.design import Design as Design0 |
16 | from esys.pycad.gmsh import Design as GMSHDesign |
17 | |
18 | try: |
19 | PYCAD_TEST_DATA=os.environ['PYCAD_TEST_DATA'] |
20 | except KeyError: |
21 | PYCAD_TEST_DATA='.' |
22 | |
23 | try: |
24 | PYCAD_WORKDIR=os.environ['PYCAD_WORKDIR'] |
25 | except KeyError: |
26 | PYCAD_WORKDIR='.' |
27 | |
28 | PYCAD_TEST_MESH_PATH=PYCAD_TEST_DATA+os.sep+"data_meshes"+os.sep |
29 | PYCAD_WORKDIR_PATH=PYCAD_WORKDIR+os.sep |
30 | |
31 | def _cross(x, y): |
32 | return numarray.array([x[1] * y[2] - x[2] * y[1], x[2] * y[0] - x[0] * y[2], x[0] * y[1] - x[1] * y[0]]) |
33 | |
34 | |
35 | class Test_PyCAD_Transformations(unittest.TestCase): |
36 | ABS_TOL=1.e-8 |
37 | def __distance(self,x,y): |
38 | return math.sqrt(numarray.dot(x-y,x-y)) |
39 | def test_Translation_x(self): |
40 | t=Translation([1,0,0]) |
41 | s0=t([1,0,0]) |
42 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
43 | self.failUnless(self.__distance(s0,numarray.array([2,0,0]))<self.ABS_TOL,"s0 is wrong.") |
44 | s1=t([0,1,0]) |
45 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
46 | self.failUnless(self.__distance(s1,numarray.array([1,1,0]))<self.ABS_TOL,"s1 is wrong.") |
47 | s2=t([0,0,1]) |
48 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
49 | self.failUnless(self.__distance(s2,numarray.array([1,0,1]))<self.ABS_TOL,"s2 is wrong.") |
50 | def test_Translation_y(self): |
51 | t=Translation([0,1,0]) |
52 | s0=t([1,0,0]) |
53 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
54 | self.failUnless(self.__distance(s0,numarray.array([1,1,0]))<self.ABS_TOL,"s0 is wrong.") |
55 | s1=t([0,1,0]) |
56 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
57 | self.failUnless(self.__distance(s1,numarray.array([0,2,0]))<self.ABS_TOL,"s1 is wrong.") |
58 | s2=t([0,0,1]) |
59 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
60 | self.failUnless(self.__distance(s2,numarray.array([0,1,1]))<self.ABS_TOL,"s2 is wrong.") |
61 | def test_Translation_z(self): |
62 | t=Translation([0,0,1]) |
63 | s0=t([1,0,0]) |
64 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
65 | self.failUnless(self.__distance(s0,numarray.array([1,0,1]))<self.ABS_TOL,"s0 is wrong.") |
66 | s1=t([0,1,0]) |
67 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
68 | self.failUnless(self.__distance(s1,numarray.array([0,1,1]))<self.ABS_TOL,"s1 is wrong.") |
69 | s2=t([0,0,1]) |
70 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
71 | self.failUnless(self.__distance(s2,numarray.array([0,0,2]))<self.ABS_TOL,"s2 is wrong.") |
72 | def test_Dilation_0_two(self): |
73 | t=Dilation(2.) |
74 | s0=t([1,0,0]) |
75 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
76 | self.failUnless(self.__distance(s0,numarray.array([2,0,0]))<self.ABS_TOL,"s0 is wrong.") |
77 | s1=t([0,1,0]) |
78 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
79 | self.failUnless(self.__distance(s1,numarray.array([0,2,0]))<self.ABS_TOL,"s1 is wrong.") |
80 | s2=t([0,0,1]) |
81 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
82 | self.failUnless(self.__distance(s2,numarray.array([0,0,2]))<self.ABS_TOL,"s2 is wrong.") |
83 | def test_Dilation_0_half(self): |
84 | t=Dilation(0.5) |
85 | s0=t([1,0,0]) |
86 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
87 | self.failUnless(self.__distance(s0,numarray.array([0.5,0,0]))<self.ABS_TOL,"s0 is wrong.") |
88 | s1=t([0,1,0]) |
89 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
90 | self.failUnless(self.__distance(s1,numarray.array([0,0.5,0]))<self.ABS_TOL,"s1 is wrong.") |
91 | s2=t([0,0,1]) |
92 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
93 | self.failUnless(self.__distance(s2,numarray.array([0,0,0.5]))<self.ABS_TOL,"s2 is wrong.") |
94 | def test_Dilation_x_two(self): |
95 | t=Dilation(2.,[1.,0.,0.]) |
96 | s0=t([1,0,0]) |
97 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
98 | self.failUnless(self.__distance(s0,numarray.array([1,0,0]))<self.ABS_TOL,"s0 is wrong.") |
99 | s0_1=t([0,0,0]) |
100 | self.failUnless(isinstance(s0_1,numarray.NumArray),"s0_1 is not a numarray object.") |
101 | self.failUnless(self.__distance(s0_1,numarray.array([-1.,0,0]))<self.ABS_TOL,"s0_1 is wrong.") |
102 | s1=t([0,1,0]) |
103 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
104 | self.failUnless(self.__distance(s1,numarray.array([-1,2,0]))<self.ABS_TOL,"s1 is wrong.") |
105 | s2=t([0,0,1]) |
106 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
107 | self.failUnless(self.__distance(s2,numarray.array([-1.,0,2]))<self.ABS_TOL,"s2 is wrong.") |
108 | def test_Dilation_x_half(self): |
109 | t=Dilation(0.5,[1.,0.,0.]) |
110 | s0=t([1,0,0]) |
111 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
112 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0]))<self.ABS_TOL,"s0 is wrong.") |
113 | s0_1=t([0,0,0]) |
114 | self.failUnless(isinstance(s0_1,numarray.NumArray),"s0_1 is not a numarray object.") |
115 | self.failUnless(self.__distance(s0_1,numarray.array([.5,0,0]))<self.ABS_TOL,"s0_1 is wrong.") |
116 | s1=t([0,1,0]) |
117 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
118 | self.failUnless(self.__distance(s1,numarray.array([0.5,0.5,0]))<self.ABS_TOL,"s1 is wrong.") |
119 | s2=t([0,0,1]) |
120 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
121 | self.failUnless(self.__distance(s2,numarray.array([0.5,0,0.5]))<self.ABS_TOL,"s2 is wrong.") |
122 | def test_Dilation_y_two(self): |
123 | t=Dilation(2.,[0.,1.,0.]) |
124 | s0=t([1,0,0]) |
125 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
126 | self.failUnless(self.__distance(s0,numarray.array([2.,-1.,0]))<self.ABS_TOL,"s0 is wrong.") |
127 | s1_1=t([0,0,0]) |
128 | self.failUnless(isinstance(s1_1,numarray.NumArray),"s1_1 is not a numarray object.") |
129 | self.failUnless(self.__distance(s1_1,numarray.array([0.,-1.,0]))<self.ABS_TOL,"s1_1 is wrong.") |
130 | s1=t([0,1,0]) |
131 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
132 | self.failUnless(self.__distance(s1,numarray.array([0.,1.,0]))<self.ABS_TOL,"s1 is wrong.") |
133 | s2=t([0,0,1]) |
134 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
135 | self.failUnless(self.__distance(s2,numarray.array([0.,-1.,2]))<self.ABS_TOL,"s2 is wrong.") |
136 | def test_Dilation_y_half(self): |
137 | t=Dilation(0.5,[0.,1.,0.]) |
138 | s0=t([1,0,0]) |
139 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
140 | self.failUnless(self.__distance(s0,numarray.array([0.5,0.5,0]))<self.ABS_TOL,"s0 is wrong.") |
141 | s1_1=t([0,0,0]) |
142 | self.failUnless(isinstance(s1_1,numarray.NumArray),"s1_1 is not a numarray object.") |
143 | self.failUnless(self.__distance(s1_1,numarray.array([0,0.5,0]))<self.ABS_TOL,"s1_1 is wrong.") |
144 | s1=t([0,1,0]) |
145 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
146 | self.failUnless(self.__distance(s1,numarray.array([0.,1.,0]))<self.ABS_TOL,"s1 is wrong.") |
147 | s2=t([0,0,1]) |
148 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
149 | self.failUnless(self.__distance(s2,numarray.array([0.,0.5,0.5]))<self.ABS_TOL,"s2 is wrong.") |
150 | def test_Dilation_z_two(self): |
151 | t=Dilation(2.,[0.,0.,1.]) |
152 | s0=t([1,0,0]) |
153 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
154 | self.failUnless(self.__distance(s0,numarray.array([2.,0.,-1.]))<self.ABS_TOL,"s0 is wrong.") |
155 | s2_1=t([0,0,0]) |
156 | self.failUnless(isinstance(s2_1,numarray.NumArray),"s2_1 is not a numarray object.") |
157 | self.failUnless(self.__distance(s2_1,numarray.array([0.,0.,-1.]))<self.ABS_TOL,"s2_1 is wrong.") |
158 | s1=t([0,1,0]) |
159 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
160 | self.failUnless(self.__distance(s1,numarray.array([0.,2.,-1.]))<self.ABS_TOL,"s1 is wrong.") |
161 | s2=t([0,0,1]) |
162 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
163 | self.failUnless(self.__distance(s2,numarray.array([0.,0.,1.]))<self.ABS_TOL,"s2 is wrong.") |
164 | def test_Dilation_z_half(self): |
165 | t=Dilation(0.5,[0.,0.,1.]) |
166 | s0=t([1,0,0]) |
167 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
168 | self.failUnless(self.__distance(s0,numarray.array([0.5,0.,0.5]))<self.ABS_TOL,"s0 is wrong.") |
169 | s2_1=t([0,0,0]) |
170 | self.failUnless(isinstance(s2_1,numarray.NumArray),"s2_1 is not a numarray object.") |
171 | self.failUnless(self.__distance(s2_1,numarray.array([0,0,0.5]))<self.ABS_TOL,"s2_1 is wrong.") |
172 | s1=t([0,1,0]) |
173 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
174 | self.failUnless(self.__distance(s1,numarray.array([0.,0.5,0.5]))<self.ABS_TOL,"s1 is wrong.") |
175 | s2=t([0,0,1]) |
176 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
177 | self.failUnless(self.__distance(s2,numarray.array([0.,0.,1.]))<self.ABS_TOL,"s2 is wrong.") |
178 | def test_Reflection_x_offset0(self): |
179 | t=Reflection([1.,0.,0.]) |
180 | s0=t([1,0,0]) |
181 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
182 | self.failUnless(self.__distance(s0,numarray.array([-1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
183 | s1=t([0,1,0]) |
184 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
185 | self.failUnless(self.__distance(s1,numarray.array([0,1,0]))<self.ABS_TOL,"s1 is wrong.") |
186 | s2=t([0,0,1]) |
187 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
188 | self.failUnless(self.__distance(s2,numarray.array([0,0,1]))<self.ABS_TOL,"s2 is wrong.") |
189 | s=t([1,2,3]) |
190 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
191 | self.failUnless(self.__distance(s,numarray.array([-1.,2,3]))<self.ABS_TOL,"s is wrong.") |
192 | def test_Reflection_x_offset2(self): |
193 | t=Reflection([-2.,0.,0.],offset=-4) |
194 | s0=t([1,0,0]) |
195 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
196 | self.failUnless(self.__distance(s0,numarray.array([3.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
197 | s1=t([0,1,0]) |
198 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
199 | self.failUnless(self.__distance(s1,numarray.array([4,1,0]))<self.ABS_TOL,"s1 is wrong.") |
200 | s2=t([0,0,1]) |
201 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
202 | self.failUnless(self.__distance(s2,numarray.array([4,0,1]))<self.ABS_TOL,"s2 is wrong.") |
203 | s=t([1,2,3]) |
204 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
205 | self.failUnless(self.__distance(s,numarray.array([3.,2,3]))<self.ABS_TOL,"s is wrong.") |
206 | def test_Reflection_x_offset2_vector(self): |
207 | t=Reflection([1.,0.,0.],offset=[2,0,0]) |
208 | s0=t([1,0,0]) |
209 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
210 | self.failUnless(self.__distance(s0,numarray.array([3.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
211 | s1=t([0,1,0]) |
212 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
213 | self.failUnless(self.__distance(s1,numarray.array([4,1,0]))<self.ABS_TOL,"s1 is wrong.") |
214 | s2=t([0,0,1]) |
215 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
216 | self.failUnless(self.__distance(s2,numarray.array([4,0,1]))<self.ABS_TOL,"s2 is wrong.") |
217 | s=t([1,2,3]) |
218 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
219 | self.failUnless(self.__distance(s,numarray.array([3.,2,3]))<self.ABS_TOL,"s is wrong.") |
220 | def test_Reflection_y_offset0(self): |
221 | t=Reflection([0.,1.,0.]) |
222 | s0=t([1,0,0]) |
223 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
224 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
225 | s1=t([0,1,0]) |
226 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
227 | self.failUnless(self.__distance(s1,numarray.array([0,-1,0]))<self.ABS_TOL,"s1 is wrong.") |
228 | s2=t([0,0,1]) |
229 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
230 | self.failUnless(self.__distance(s2,numarray.array([0,0,1]))<self.ABS_TOL,"s2 is wrong.") |
231 | s=t([1,2,3]) |
232 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
233 | self.failUnless(self.__distance(s,numarray.array([1.,-2,3]))<self.ABS_TOL,"s is wrong.") |
234 | def test_Reflection_y_offset2(self): |
235 | t=Reflection([0.,-2.,0.],offset=-4) |
236 | s0=t([1,0,0]) |
237 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
238 | self.failUnless(self.__distance(s0,numarray.array([1.,4,0.]))<self.ABS_TOL,"s0 is wrong.") |
239 | s1=t([0,1,0]) |
240 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
241 | self.failUnless(self.__distance(s1,numarray.array([0,3,0]))<self.ABS_TOL,"s1 is wrong.") |
242 | s2=t([0,0,1]) |
243 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
244 | self.failUnless(self.__distance(s2,numarray.array([0,4,1]))<self.ABS_TOL,"s2 is wrong.") |
245 | s=t([1,2,3]) |
246 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
247 | self.failUnless(self.__distance(s,numarray.array([1.,2,3]))<self.ABS_TOL,"s is wrong.") |
248 | def test_Reflection_y_offset2_vector(self): |
249 | t=Reflection([0.,1.,0.],offset=[0,2,0]) |
250 | s0=t([1,0,0]) |
251 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
252 | self.failUnless(self.__distance(s0,numarray.array([1.,4,0.]))<self.ABS_TOL,"s0 is wrong.") |
253 | s1=t([0,1,0]) |
254 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
255 | self.failUnless(self.__distance(s1,numarray.array([0,3,0]))<self.ABS_TOL,"s1 is wrong.") |
256 | s2=t([0,0,1]) |
257 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
258 | self.failUnless(self.__distance(s2,numarray.array([0,4,1]))<self.ABS_TOL,"s2 is wrong.") |
259 | s=t([1,2,3]) |
260 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
261 | self.failUnless(self.__distance(s,numarray.array([1.,2,3]))<self.ABS_TOL,"s is wrong.") |
262 | def test_Reflection_z_offset0(self): |
263 | t=Reflection([0.,0.,1.]) |
264 | s0=t([1,0,0]) |
265 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
266 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
267 | s1=t([0,1,0]) |
268 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
269 | self.failUnless(self.__distance(s1,numarray.array([0,1,0]))<self.ABS_TOL,"s1 is wrong.") |
270 | s2=t([0,0,1]) |
271 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
272 | self.failUnless(self.__distance(s2,numarray.array([0,0,-1]))<self.ABS_TOL,"s2 is wrong.") |
273 | s=t([1,2,3]) |
274 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
275 | self.failUnless(self.__distance(s,numarray.array([1.,2,-3]))<self.ABS_TOL,"s is wrong.") |
276 | def test_Reflection_z_offset2(self): |
277 | t=Reflection([0.,0.,-2.],offset=-4) |
278 | s0=t([1,0,0]) |
279 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
280 | self.failUnless(self.__distance(s0,numarray.array([1.,0,4.]))<self.ABS_TOL,"s0 is wrong.") |
281 | s1=t([0,1,0]) |
282 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
283 | self.failUnless(self.__distance(s1,numarray.array([0,1,4]))<self.ABS_TOL,"s1 is wrong.") |
284 | s2=t([0,0,1]) |
285 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
286 | self.failUnless(self.__distance(s2,numarray.array([0,0,3]))<self.ABS_TOL,"s2 is wrong.") |
287 | s=t([1,2,3]) |
288 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
289 | self.failUnless(self.__distance(s,numarray.array([1.,2,1]))<self.ABS_TOL,"s is wrong.") |
290 | def test_Reflection_z_offset2_vector(self): |
291 | t=Reflection([0.,0.,1.],offset=[0,0,2]) |
292 | s0=t([1,0,0]) |
293 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
294 | self.failUnless(self.__distance(s0,numarray.array([1.,0,4.]))<self.ABS_TOL,"s0 is wrong.") |
295 | s1=t([0,1,0]) |
296 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
297 | self.failUnless(self.__distance(s1,numarray.array([0,1,4]))<self.ABS_TOL,"s1 is wrong.") |
298 | s2=t([0,0,1]) |
299 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
300 | self.failUnless(self.__distance(s2,numarray.array([0,0,3]))<self.ABS_TOL,"s2 is wrong.") |
301 | s=t([1,2,3]) |
302 | self.failUnless(isinstance(s,numarray.NumArray),"s is not a numarray object.") |
303 | self.failUnless(self.__distance(s,numarray.array([1.,2,1]))<self.ABS_TOL,"s is wrong.") |
304 | def test_Rotatation_x_90_0(self): |
305 | t=Rotatation(axis=[1.,0.,0.],point=[1.,0.,0.],angle=90*DEG) |
306 | s0=t([1,0,0]) |
307 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
308 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
309 | s1=t([0,1,0]) |
310 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
311 | self.failUnless(self.__distance(s1,numarray.array([0.,0,1.]))<self.ABS_TOL,"s1 is wrong.") |
312 | s2=t([0,0,1]) |
313 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
314 | self.failUnless(self.__distance(s2,numarray.array([0.,-1.,0.]))<self.ABS_TOL,"s2 is wrong.") |
315 | def test_Rotatation_x_30_0(self): |
316 | t=Rotatation(axis=[1.,0.,0.],point=[1.,0.,0.],angle=30*DEG) |
317 | s0=t([1,0,0]) |
318 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
319 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
320 | s1=t([0,1,0]) |
321 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
322 | self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
323 | self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
324 | self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([1.,0.,0.]))<0.,"s1 has wrong orientation.") |
325 | s2=t([0,0,1]) |
326 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
327 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
328 | self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
329 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([1.,0.,0.]))<0.,"s2 has wrong orientation.") |
330 | def test_Rotatation_x_330_0(self): |
331 | t=Rotatation(axis=[1.,0.,0.],point=[1.,0.,0.],angle=330*DEG) |
332 | s0=t([1,0,0]) |
333 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
334 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
335 | s1=t([0,1,0]) |
336 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
337 | self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
338 | self.failUnless(abs(s1[1]-math.cos(330*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
339 | self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([1.,0.,0.]))>0.,"s1 has wrong orientation.") |
340 | s2=t([0,0,1]) |
341 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
342 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
343 | self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
344 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([1.,0.,0.]))>0.,"s2 has wrong orientation.") |
345 | def test_Rotatation_x_90(self): |
346 | t=Rotatation(axis=[-1.,0.,0.],point=[2.,0.,0.],angle=90*DEG) |
347 | s0=t([1,0,0]) |
348 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
349 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
350 | s1=t([0,1,0]) |
351 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
352 | self.failUnless(self.__distance(s1,numarray.array([0.,0,-1.]))<self.ABS_TOL,"s1 is wrong.") |
353 | s2=t([0,0,1]) |
354 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
355 | self.failUnless(self.__distance(s2,numarray.array([0.,1.,0.]))<self.ABS_TOL,"s2 is wrong.") |
356 | def test_Rotatation_x_30(self): |
357 | t=Rotatation(axis=[-1.,0.,0.],point=[1.,0.,0.],angle=30*DEG) |
358 | s0=t([1,0,0]) |
359 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
360 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
361 | s1=t([0,1,0]) |
362 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
363 | self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
364 | self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
365 | self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([-1.,0.,0.]))<0.,"s1 has wrong orientation.") |
366 | s2=t([0,0,1]) |
367 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
368 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
369 | self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
370 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([-1.,0.,0.]))<0.,"s2 has wrong orientation.") |
371 | def test_Rotatation_x_330(self): |
372 | t=Rotatation(axis=[-1.,0.,0.],point=[1.,0.,0.],angle=330*DEG) |
373 | s0=t([1,0,0]) |
374 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
375 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
376 | s1=t([0,1,0]) |
377 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
378 | self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
379 | self.failUnless(abs(s1[1]-math.cos(330*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
380 | self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([-1.,0.,0.]))>0.,"s1 has wrong orientation.") |
381 | s2=t([0,0,1]) |
382 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
383 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
384 | self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
385 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([-1.,0.,0.]))>0.,"s2 has wrong orientation.") |
386 | def test_Rotatation_y_90_0(self): |
387 | t=Rotatation(axis=[0.,1.,0.],point=[0.,1.,0.],angle=90*DEG) |
388 | s0=t([1,0,0]) |
389 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
390 | self.failUnless(self.__distance(s0,numarray.array([0.,0,-1.]))<self.ABS_TOL,"s0 is wrong.") |
391 | s1=t([0,5,0]) |
392 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
393 | self.failUnless(self.__distance(s1,numarray.array([0.,5,0.]))<self.ABS_TOL,"s1 is wrong.") |
394 | s2=t([0,0,1]) |
395 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
396 | self.failUnless(self.__distance(s2,numarray.array([1,0.,0.]))<self.ABS_TOL,"s2 is wrong.") |
397 | def test_Rotatation_y_30_0(self): |
398 | t=Rotatation(axis=[0.,1.,0.],point=[0.,1.,0.],angle=30*DEG) |
399 | s0=t([1,0,0]) |
400 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
401 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
402 | self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
403 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,1.,0.]))<0.,"s0 has wrong orientation.") |
404 | s1=t([0,5,0]) |
405 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
406 | self.failUnless(self.__distance(s1,numarray.array([0.,5,0.]))<self.ABS_TOL,"s1 is wrong.") |
407 | s2=t([0,0,1]) |
408 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
409 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
410 | self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
411 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,1.,0.]))<0.,"s2 has wrong orientation.") |
412 | def test_Rotatation_y_330_0(self): |
413 | t=Rotatation(axis=[0.,1.,0.],point=[0.,1.,0.],angle=330*DEG) |
414 | s0=t([1,0,0]) |
415 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
416 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
417 | self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
418 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,1.,0.]))>0.,"s0 has wrong orientation.") |
419 | s1=t([0,1,0]) |
420 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
421 | self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
422 | s2=t([0,0,1]) |
423 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
424 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
425 | self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
426 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,1.,0.]))>0.,"s2 has wrong orientation.") |
427 | def test_Rotatation_y_90(self): |
428 | t=Rotatation(axis=[0.,-1.,0.],point=[0.,2.,0.],angle=90*DEG) |
429 | s0=t([1,0,0]) |
430 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
431 | self.failUnless(self.__distance(s0,numarray.array([0.,0,1.]))<self.ABS_TOL,"s0 is wrong.") |
432 | s1=t([0,5,0]) |
433 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
434 | self.failUnless(self.__distance(s1,numarray.array([0.,5,0.]))<self.ABS_TOL,"s1 is wrong.") |
435 | s2=t([0,0,1]) |
436 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
437 | self.failUnless(self.__distance(s2,numarray.array([-1,0.,0.]))<self.ABS_TOL,"s2 is wrong.") |
438 | def test_Rotatation_y_30(self): |
439 | t=Rotatation(axis=[0.,-1.,0.],point=[0.,2.,0.],angle=30*DEG) |
440 | s0=t([1,0,0]) |
441 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
442 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
443 | self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
444 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,-1.,0.]))<0.,"s0 has wrong orientation.") |
445 | s1=t([0,1,0]) |
446 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
447 | self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
448 | s2=t([0,0,1]) |
449 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
450 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
451 | self.failUnless(abs(s2[2]-math.cos(30*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
452 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,-1.,0.]))<0.,"s2 has wrong orientation.") |
453 | def test_Rotatation_y_330(self): |
454 | t=Rotatation(axis=[0.,-1.,0.],point=[0.,2.,0.],angle=330*DEG) |
455 | s0=t([1,0,0]) |
456 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
457 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
458 | self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
459 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,-1.,0.]))>0.,"s0 has wrong orientation.") |
460 | s1=t([0,1,0]) |
461 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
462 | self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
463 | s2=t([0,0,1]) |
464 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
465 | self.failUnless(abs(numarray.dot(s2,s2)-1.)<self.ABS_TOL,"s2 length is wrong.") |
466 | self.failUnless(abs(s2[2]-math.cos(330*DEG))<self.ABS_TOL,"s2 angle is wrong.") |
467 | self.failUnless(numarray.dot(_cross(s2,[0,0,1]),numarray.array([0.,-1.,0.]))>0.,"s2 has wrong orientation.") |
468 | def test_Rotatation_z_90_0(self): |
469 | t=Rotatation(axis=[0.,0.,1.],point=[0.,0.,1.],angle=90*DEG) |
470 | s0=t([1,0,0]) |
471 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
472 | self.failUnless(self.__distance(s0,numarray.array([0.,1,0.]))<self.ABS_TOL,"s0 is wrong.") |
473 | s1=t([0,5,0]) |
474 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
475 | self.failUnless(self.__distance(s1,numarray.array([-5.,0,0.]))<self.ABS_TOL,"s1 is wrong.") |
476 | s2=t([0,0,1]) |
477 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
478 | self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
479 | def test_Rotatation_z_30_0(self): |
480 | t=Rotatation(axis=[0.,0.,1.],point=[0.,0.,1.],angle=30*DEG) |
481 | s0=t([1,0,0]) |
482 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
483 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
484 | self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
485 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,1.]))<0.,"s0 has wrong orientation.") |
486 | s1=t([0,5,0]) |
487 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
488 | self.failUnless(abs(numarray.dot(s1,s1)-5.**2)<self.ABS_TOL,"s1 length is wrong.") |
489 | self.failUnless(abs(s1[1]/5.-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
490 | self.failUnless(numarray.dot(_cross(s1,[0,5,0]),numarray.array([0.,0.,1.]))<0.,"s1 has wrong orientation.") |
491 | s2=t([0,0,1]) |
492 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
493 | self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
494 | def test_Rotatation_z_330_0(self): |
495 | t=Rotatation(axis=[0.,0.,1.],point=[0.,0.,1.],angle=330*DEG) |
496 | s0=t([1,0,0]) |
497 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
498 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
499 | self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
500 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,1.]))>0.,"s0 has wrong orientation.") |
501 | s1=t([0,5,0]) |
502 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
503 | self.failUnless(abs(numarray.dot(s1,s1)-5.**2)<self.ABS_TOL,"s1 length is wrong.") |
504 | self.failUnless(abs(s1[1]/5.-math.cos(330*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
505 | self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([0.,0.,1.]))>0.,"s1 has wrong orientation.") |
506 | def test_Rotatation_z_90(self): |
507 | t=Rotatation(axis=[0.,0.,-1.],point=[0.,0.,2.],angle=90*DEG) |
508 | s0=t([1,0,0]) |
509 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
510 | self.failUnless(self.__distance(s0,numarray.array([0.,-1,0.]))<self.ABS_TOL,"s0 is wrong.") |
511 | s1=t([0,5,0]) |
512 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
513 | self.failUnless(self.__distance(s1,numarray.array([5.,0,0.]))<self.ABS_TOL,"s1 is wrong.") |
514 | s2=t([0,0,1]) |
515 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
516 | self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
517 | def test_Rotatation_z_30(self): |
518 | t=Rotatation(axis=[0.,0.,-1.],point=[0.,0.,2.],angle=30*DEG) |
519 | s0=t([1,0,0]) |
520 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
521 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
522 | self.failUnless(abs(s0[0]-math.cos(30*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
523 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,-1.]))<0.,"s0 has wrong orientation.") |
524 | s1=t([0,1,0]) |
525 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
526 | self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
527 | self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
528 | self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([0.,0.,-1.]))<0.,"s1 has wrong orientation.") |
529 | s2=t([0,0,1]) |
530 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
531 | self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
532 | def test_Rotatation_z_330(self): |
533 | t=Rotatation(axis=[0.,0.,-1.],point=[0.,0.,2.],angle=330*DEG) |
534 | s0=t([1,0,0]) |
535 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
536 | self.failUnless(abs(numarray.dot(s0,s0)-1.)<self.ABS_TOL,"s0 length is wrong.") |
537 | self.failUnless(abs(s0[0]-math.cos(330*DEG))<self.ABS_TOL,"s0 angle is wrong.") |
538 | self.failUnless(numarray.dot(_cross(s0,[1,0,0]),numarray.array([0.,0.,-1.]))>0.,"s0 has wrong orientation.") |
539 | s1=t([0,1,0]) |
540 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
541 | self.failUnless(abs(numarray.dot(s1,s1)-1.)<self.ABS_TOL,"s1 length is wrong.") |
542 | self.failUnless(abs(s1[1]-math.cos(30*DEG))<self.ABS_TOL,"s1 angle is wrong.") |
543 | self.failUnless(numarray.dot(_cross(s1,[0,1,0]),numarray.array([0.,0.,-1.]))>0.,"s1 has wrong orientation.") |
544 | s2=t([0,0,1]) |
545 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
546 | self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
547 | def test_Rotatation_x_90_1(self): |
548 | t=Rotatation(point=[0.,0.,1.],axis=[1.,0.,0.],angle=90*DEG) |
549 | s0=t([1,0,0]) |
550 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
551 | self.failUnless(self.__distance(s0,numarray.array([1.,1,1.]))<self.ABS_TOL,"s0 is wrong.") |
552 | s1=t([0,1,0]) |
553 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
554 | self.failUnless(self.__distance(s1,numarray.array([0.,1,2.]))<self.ABS_TOL,"s1 is wrong.") |
555 | s2=t([0,0,1]) |
556 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
557 | self.failUnless(self.__distance(s2,numarray.array([0.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
558 | def test_Rotatation_y_90_1(self): |
559 | t=Rotatation(point=[1.,0.,0.],axis=[0.,1.,0.],angle=90*DEG) |
560 | s0=t([1,0,0]) |
561 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
562 | self.failUnless(self.__distance(s0,numarray.array([1.,0,0.]))<self.ABS_TOL,"s0 is wrong.") |
563 | s1=t([0,1,0]) |
564 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
565 | self.failUnless(self.__distance(s1,numarray.array([1.,1,1.]))<self.ABS_TOL,"s1 is wrong.") |
566 | s2=t([0,0,1]) |
567 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
568 | self.failUnless(self.__distance(s2,numarray.array([2.,0,1.]))<self.ABS_TOL,"s2 is wrong.") |
569 | def test_Rotatation_z_90_1(self): |
570 | t=Rotatation(point=[0.,1.,0.],axis=[0.,0.,1.],angle=90*DEG) |
571 | s0=t([1,0,0]) |
572 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
573 | self.failUnless(self.__distance(s0,numarray.array([1.,2,0.]))<self.ABS_TOL,"s0 is wrong.") |
574 | s1=t([0,1,0]) |
575 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
576 | self.failUnless(self.__distance(s1,numarray.array([0.,1,0.]))<self.ABS_TOL,"s1 is wrong.") |
577 | s2=t([0,0,1]) |
578 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
579 | self.failUnless(self.__distance(s2,numarray.array([1.,1,1.]))<self.ABS_TOL,"s2 is wrong.") |
580 | def test_Rotatation_diag_90_0(self): |
581 | t=Rotatation(axis=[1.,1.,1.],angle=90*DEG) |
582 | s0=t([1,-1,0]) |
583 | self.failUnless(isinstance(s0,numarray.NumArray),"s0 is not a numarray object.") |
584 | self.failUnless(abs(numarray.dot(s0,s0)-2.)<self.ABS_TOL,"s0 length is wrong.") |
585 | self.failUnless(abs(numarray.dot(s0,numarray.array([1,-1,0])))<self.ABS_TOL,"s0 angle is wrong.") |
586 | self.failUnless(numarray.dot(_cross(s0,[1,-1,0]),numarray.array([1.,1.,1.]))<0.,"s0 has wrong orientation.") |
587 | s1=t([0,1,-1]) |
588 | self.failUnless(isinstance(s1,numarray.NumArray),"s1 is not a numarray object.") |
589 | self.failUnless(abs(numarray.dot(s1,s1)-2.)<self.ABS_TOL,"s1 length is wrong.") |
590 | self.failUnless(abs(numarray.dot(s1,numarray.array([0,1,-1])))<self.ABS_TOL,"s1 angle is wrong.") |
591 | self.failUnless(numarray.dot(_cross(s1,[0,1,-1]),numarray.array([1.,1.,1.]))<0.,"s1 has wrong orientation.") |
592 | s2=t([-1,0,1]) |
593 | self.failUnless(isinstance(s2,numarray.NumArray),"s2 is not a numarray object.") |
594 | self.failUnless(abs(numarray.dot(s2,s2)-2.)<self.ABS_TOL,"s2 length is wrong.") |
595 | self.failUnless(abs(numarray.dot(s2,numarray.array([-1,0,1])))<self.ABS_TOL,"s2 angle is wrong.") |
596 | self.failUnless(numarray.dot(_cross(s2,[-1,0,1]),numarray.array([1.,1.,1.]))<0.,"s2 has wrong orientation.") |
597 | s3=t([1,1,1]) |
598 | self.failUnless(isinstance(s3,numarray.NumArray),"s3 is not a numarray object.") |
599 | self.failUnless(self.__distance(s3,numarray.array([1.,1,1.]))<self.ABS_TOL,"s3 is wrong.") |
600 | |
601 | class Test_PyCAD_Primitives(unittest.TestCase): |
602 | def setUp(self): |
603 | resetGlobalPrimitiveIdCounter() |
604 | |
605 | def test_Primitive(self): |
606 | p=Primitive() |
607 | |
608 | id=p.getID() |
609 | self.failUnless(isinstance(id,int),"id number is not an integer") |
610 | self.failUnless(not id==Primitive().getID(),"id number is not unique") |
611 | |
612 | self.failUnless(p==p.getUnderlyingPrimitive(),"getUnderlyingPrimitive does not return self.") |
613 | |
614 | def test_ReversePrimitive(self): |
615 | p=Primitive() |
616 | |
617 | rp=ReversePrimitive(p) |
618 | self.failUnless(p.getID()==rp.getID(),"reverse primitive does not have same id like source") |
619 | self.failUnless(p==rp.getUnderlyingPrimitive(),"getUnderlyingPrimitive does return source.") |
620 | self.failUnless(p == -rp,"reverse or reverse does not return source.") |
621 | |
622 | def test_Point(self): |
623 | p=Point(1.,2.,3.,local_scale=9.) |
624 | |
625 | id=p.getID() |
626 | self.failUnless(isinstance(id,int),"id number is not an integer") |
627 | self.failUnless(not id==Primitive().getID(),"id number is not unique") |
628 | |
629 | # check reverse point |
630 | self.failUnless(p == -p,"reverse is not working.") |
631 | |
632 | # check history: |
633 | hs=p.getPrimitives() |
634 | self.failUnless(len(hs)==1,"history must have length 1.") |
635 | self.failUnless(p in hs,"history must contain point p") |
636 | |
637 | # check incolved points: |
638 | ps=p.getConstructionPoints() |
639 | self.failUnless(len(ps)==1,"point set must have length 1.") |
640 | self.failUnless(p in ps,"point set must contain point p") |
641 | |
642 | # check coordinates: |
643 | c=p.getCoordinates() |
644 | self.failUnless(isinstance(c,numarray.NumArray),"coordinates are not a numarray object.") |
645 | self.failUnless(c[0]==1.,"x coordinate is not 1.") |
646 | self.failUnless(c[1]==2.,"y coordinate is not 2.") |
647 | self.failUnless(c[2]==3.,"z coordinate is not 3.") |
648 | |
649 | # reset coordinates: |
650 | p.setCoordinates([-1.,-2.,-3.]) |
651 | c=p.getCoordinates() |
652 | self.failUnless(isinstance(c,numarray.NumArray),"new coordinates are not a numarray object.") |
653 | self.failUnless(c[0]==-1.,"new x coordinate is not -1.") |
654 | self.failUnless(c[1]==-2.,"new y coordinate is not -2.") |
655 | self.failUnless(c[2]==-3.,"new z coordinate is not -3.") |
656 | |
657 | # check for a colocated point: |
658 | self.failUnless(p.isColocated(Point(-1.,-2.,-3.)),"colocation not detected.") |
659 | self.failUnless(not p.isColocated(numarray.array([-1.,-2.,-3.])),"colocation with numarray representation not detected.") |
660 | self.failUnless(not p.isColocated(Point(1.,-2.,-3.)),"false colocation detected.") |
661 | self.failUnless(not p.isColocated(Point(0.,0.,0.)),"false colocation with origin detected.") |
662 | |
663 | # check for local length scale |
664 | l=p.getLocalScale() |
665 | self.failUnless(l==9.,"refinement scale is not 9.") |
666 | |
667 | # check for new local length scale |
668 | p.setLocalScale(3.) |
669 | l=p.getLocalScale() |
670 | self.failUnless(l==3.,"new refinement scale is not 3.") |
671 | |
672 | # negative value shouldn't work. |
673 | self.failUnlessRaises(ValueError,p.setLocalScale,-3.) |
674 | |
675 | # copy: |
676 | an_other_p=p.copy() |
677 | self.failUnless(isinstance(an_other_p ,Point),"copy is not a point") |
678 | self.failUnless(not an_other_p.getID() == p.getID(),"copy has same Id") |
679 | self.failUnless(p.isColocated(an_other_p),"p is not colocated with its copy.") |
680 | self.failUnless(an_other_p.isColocated(p),"the copy is not colocated with p.") |
681 | self.failUnless(an_other_p.getLocalScale()==3.,"copy has wrong local scale.") |
682 | |
683 | # modify by Transformation: |
684 | p.modifyBy(Dilation(-1)) |
685 | self.failUnless(p.isColocated(Point(1.,2.,3.)),"in-place transformation failed") |
686 | |
687 | # apply Transformation: |
688 | dil_p=p.apply(Dilation(4)) |
689 | self.failUnless(dil_p.isColocated(Point(4.,8.,12.)),"applying transformation failed") |
690 | self.failUnless(not dil_p.getID() == p.getID(),"transformed point has same Id") |
691 | self.failUnless(dil_p.getLocalScale()==3.,"transformed point has wrong local scale.") |
692 | |
693 | # overloaded add: |
694 | shift_p=p+[1,1,1] |
695 | self.failUnless(shift_p.isColocated(Point(2,3.,4)),"applying shift by list failed") |
696 | self.failUnless(not shift_p.getID() == p.getID(),"shift by list has same Id") |
697 | self.failUnless(shift_p.getLocalScale()==3.,"shift by list has wrong local scale.") |
698 | |
699 | shift_p=p+numarray.array([1,1,1]) |
700 | self.failUnless(shift_p.isColocated(Point(2,3.,4)),"applying shift by numarray failed") |
701 | self.failUnless(not shift_p.getID() == p.getID(),"shift by numarray has same Id") |
702 | self.failUnless(shift_p.getLocalScale()==3.,"shift by numarray has wrong local scale.") |
703 | # overloaded minus |
704 | shift_p=p-[1,1,1] |
705 | self.failUnless(shift_p.isColocated(Point(0,1,2.)),"applying shift by -list failed") |
706 | self.failUnless(not shift_p.getID() == p.getID(),"shift by -list has same Id") |
707 | self.failUnless(shift_p.getLocalScale()==3.,"shift by -list has wrong local scale.") |
708 | |
709 | shift_p=p-numarray.array([1,1,1]) |
710 | self.failUnless(shift_p.isColocated(Point(0,1,2.)),"applying shift by -numarray failed") |
711 | self.failUnless(not shift_p.getID() == p.getID(),"shift by -numarray has same Id") |
712 | self.failUnless(shift_p.getLocalScale()==3.,"shift by -numarray has wrong local scale.") |
713 | # overloaded inplace add: |
714 | p+=[1,1,1] |
715 | self.failUnless(p.isColocated(Point(2,3.,4)),"modification by list shift failed") |
716 | |
717 | p+=numarray.array([1,1,1]) |
718 | self.failUnless(p.isColocated(Point(3,4,5)),"modification by numarray shift failed") |
719 | |
720 | # overloaded inplace add: |
721 | p-=[1,1,1] |
722 | self.failUnless(p.isColocated(Point(2,3,4)),"modification by -list shift failed") |
723 | |
724 | p-=numarray.array([1,1,1]) |
725 | self.failUnless(p.isColocated(Point(1,2.,3)),"modification by -numarray shift failed") |
726 | |
727 | #overloaded multiplication: |
728 | mult_p=2*p |
729 | self.failUnless(mult_p.isColocated(Point(2,4,6)),"applying int factor failed") |
730 | self.failUnless(not mult_p.getID() == p.getID(),"shift by int factor has same Id") |
731 | self.failUnless(mult_p.getLocalScale()==3.,"shift by int factor has wrong local scale.") |
732 | |
733 | mult_p=2.*p |
734 | self.failUnless(mult_p.isColocated(Point(2,4,6)),"applying float factor failed") |
735 | self.failUnless(not mult_p.getID() == p.getID(),"shift by float factor has same Id") |
736 | self.failUnless(mult_p.getLocalScale()==3.,"shift by float factor has wrong local scale.") |
737 | |
738 | mult_p=Dilation(2)*p |
739 | self.failUnless(mult_p.isColocated(Point(2,4,6)),"applying Dilation factor failed") |
740 | self.failUnless(not mult_p.getID() == p.getID(),"shift by Dilation factor has same Id") |
741 | self.failUnless(mult_p.getLocalScale()==3.,"shift by Dilation factor has wrong local scale.") |
742 | |
743 | #overloaded inplace multiplication: |
744 | p*=2 |
745 | self.failUnless(p.isColocated(Point(2,4,6)),"applying in-place int factor failed") |
746 | |
747 | p*=2. |
748 | self.failUnless(p.isColocated(Point(4,8,12)),"applying in-place float factor failed") |
749 | |
750 | p*=Dilation(2) |
751 | self.failUnless(p.isColocated(Point(8,16,24)),"applying in-place Dilation factor failed") |
752 | |
753 | # get gmsh code |
754 | code=p.getGmshCommand(2.) |
755 | self.failUnless("Point(1) = {8.0 , 16.0, 24.0 , 6.0 };"== code, "wrong gmsh code") |
756 | |
757 | def test_Spline(self): |
758 | p0=Point(0,0,0,0.1) |
759 | p1=Point(1,1,1,0.2) |
760 | p2=Point(2,2,2,0.3) |
761 | p3=Point(3,3,3,0.4) |
762 | p4=Point(1,2,3) |
763 | |
764 | self.failUnlessRaises(ValueError,Spline,p0) |
765 | c=Spline(p0,p1,p2,p3) |
766 | |
767 | self.failUnless(len(c) == 4, "wrong spline curve length") |
768 | self.failUnless(c.getStartPoint()==p0, "wrong start point of spline curve") |
769 | self.failUnless(c.getEndPoint()==p3, "wrong end point of spline curve") |
770 | |
771 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
772 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
773 | |
774 | self.failUnless(not c.isColocated(p1),"spline is colocated with point.") |
775 | self.failUnless(not c.isColocated(Spline(p0,p1,p2)),"spline is colocated with spline of different length.") |
776 | self.failUnless(not c.isColocated(Spline(p0,p1,p4,p3)),"spline is colocated with spline with different point.") |
777 | self.failUnless(c.isColocated(Spline(p0,p1,p2,p3)),"spline is not colocated with spline with same points.") |
778 | self.failUnless(c.isColocated(Spline(p3,p2,p1,p0)),"spline is not colocated with spline with same points but opposite direction.") |
779 | self.failUnless(not c.isColocated(Curve(p0,p1,p2,p3)),"spline curve is identified with curve.") |
780 | |
781 | co=c.getControlPoints() |
782 | self.failUnless(co[0]==p0, "1st control point is wrong.") |
783 | self.failUnless(co[1]==p1, "2nd control point is wrong.") |
784 | self.failUnless(co[2]==p2, "3rd control point is wrong.") |
785 | self.failUnless(co[3]==p3, "4th control point is wrong.") |
786 | |
787 | c.setLocalScale(3.) |
788 | co=c.getControlPoints() |
789 | self.failUnless(co[0].getLocalScale() == 3., "new local scale of 1st control point is wrong.") |
790 | self.failUnless(co[1].getLocalScale() == 3., "new local scale of 2nd control point is wrong.") |
791 | self.failUnless(co[2].getLocalScale() == 3., "new local scale of 3rd control point is wrong.") |
792 | self.failUnless(co[3].getLocalScale() == 3., "new local scale of 4th control point is wrong.") |
793 | |
794 | code=c.getGmshCommand() |
795 | self.failUnless(code == "Spline(6) = {1, 2, 3, 4};", "gmsh command wrong.") |
796 | |
797 | h=c.getPrimitives() |
798 | self.failUnless(len(h) == 5, "number of primitives in history is wrong.") |
799 | self.failUnless(p0 in h, "missing p0 in history.") |
800 | self.failUnless(p1 in h, "missing p1 in history.") |
801 | self.failUnless(p2 in h, "missing p2 in history.") |
802 | self.failUnless(p3 in h, "missing p3 in history.") |
803 | self.failUnless(c in h, "missing spline curve in history.") |
804 | |
805 | cp=c.copy() |
806 | cpcp=cp.getControlPoints() |
807 | self.failUnless(not cp == c, "copy returns same spline curve.") |
808 | self.failUnless(c.isColocated(cp),"spline curve is not colocated with its copy.") |
809 | self.failUnless(not p0 == cpcp[0],"1st point of deep copy and source are the same.") |
810 | self.failUnless(not p1 == cpcp[1],"2st point of deep copy and source are the same.") |
811 | self.failUnless(not p2 == cpcp[2],"3st point of deep copy and source are the same.") |
812 | self.failUnless(not p3 == cpcp[3],"4st point of deep copy and source are the same.") |
813 | |
814 | c.modifyBy(Dilation(-1.)) |
815 | cp=c.getControlPoints() |
816 | self.failUnless(c.isColocated(Spline(Point(0,0,0),Point(-1,-1,-1),Point(-2,-2,-2),Point(-3,-3,-3))),"inplace dilation is wrong.") |
817 | self.failUnless(p0 == cp[0],"1st new point after Dilation.") |
818 | self.failUnless(p1 == cp[1],"2nd new point after Dilation.") |
819 | self.failUnless(p2 == cp[2],"3rd new point after Dilation.") |
820 | self.failUnless(p3 == cp[3],"4th new point after Dilation.") |
821 | |
822 | dc=c.apply(Dilation(-1.)) |
823 | dccp=dc.getControlPoints() |
824 | self.failUnless(dc.isColocated(Spline(Point(0,0,0),Point(1,1,1),Point(2,2,2),Point(3,3,3))),"dilation is wrong.") |
825 | self.failUnless(not p0 == dccp[0],"1st point of Dilation is identical to source.") |
826 | self.failUnless(dccp[0].isColocated(Point(0,0,0)),"1st point of Dilation is is wrongly located.") |
827 | self.failUnless(not p1 == dccp[1],"2nd point of Dilation is identical to source.") |
828 | self.failUnless(dccp[1].isColocated(Point(1,1,1)),"1st point of Dilation is is wrongly located.") |
829 | self.failUnless(not p2 == dccp[2],"3rd point of Dilation is identical to source.") |
830 | self.failUnless(dccp[2].isColocated(Point(2,2,2)),"1st point of Dilation is is wrongly located.") |
831 | self.failUnless(not p3 == dccp[3],"4th point of Dilation is identical to source.") |
832 | self.failUnless(dccp[3].isColocated(Point(3,3,3)),"1st point of Dilation is is wrongly located.") |
833 | |
834 | def test_ReverseSpline(self): |
835 | p0=Point(0,0,0,0.1) |
836 | p1=Point(1,1,1,0.2) |
837 | p2=Point(2,2,2,0.3) |
838 | p3=Point(3,3,3,0.4) |
839 | p4=Point(1,2,3) |
840 | |
841 | CC0=Spline(p0,p1,p2,p3) |
842 | c=-CC0 |
843 | |
844 | self.failUnless(len(c) == 4, "wrong reverse spline curve length") |
845 | self.failUnless(c.getStartPoint()==p3, "wrong start point of reverse spline curve") |
846 | self.failUnless(c.getEndPoint()==p0, "wrong end point of reverse spline curve") |
847 | |
848 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
849 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
850 | |
851 | self.failUnless(not c.isColocated(p1),"reverse spline is colocated with point.") |
852 | self.failUnless(not c.isColocated(Spline(p0,p1,p2)),"reverse spline is colocated with spline of different length.") |
853 | self.failUnless(not c.isColocated(Spline(p0,p1,p4,p3)),"reverse spline is colocated with spline with different point.") |
854 | self.failUnless(c.isColocated(Spline(p0,p1,p2,p3)),"reverse spline is not colocated with spline with same points but opposite direction.") |
855 | self.failUnless(c.isColocated(Spline(p3,p2,p1,p0)),"reverse spline is not colocated with spline with same points.") |
856 | self.failUnless(not c.isColocated(Curve(p0,p1,p2,p3)),"spline curve is identified with curve.") |
857 | |
858 | co=c.getControlPoints() |
859 | self.failUnless(co[0]==p3, "1st control point is wrong.") |
860 | self.failUnless(co[1]==p2, "2nd control point is wrong.") |
861 | self.failUnless(co[2]==p1, "3rd control point is wrong.") |
862 | self.failUnless(co[3]==p0, "4th control point is wrong.") |
863 | |
864 | c.setLocalScale(3.) |
865 | co=c.getControlPoints() |
866 | self.failUnless(co[0].getLocalScale() == 3., "new local scale of 1st control point is wrong.") |
867 | self.failUnless(co[1].getLocalScale() == 3., "new local scale of 2nd control point is wrong.") |
868 | self.failUnless(co[2].getLocalScale() == 3., "new local scale of 3rd control point is wrong.") |
869 | self.failUnless(co[3].getLocalScale() == 3., "new local scale of 4th control point is wrong.") |
870 | |
871 | code=c.getGmshCommand() |
872 | self.failUnless(code == "Spline(6) = {1, 2, 3, 4};", "gmsh command wrong.") |
873 | |
874 | h=c.getPrimitives() |
875 | self.failUnless(len(h) == 5, "number of primitives in history is wrong.") |
876 | self.failUnless(p0 in h, "missing p0 in history.") |
877 | self.failUnless(p1 in h, "missing p1 in history.") |
878 | self.failUnless(p2 in h, "missing p2 in history.") |
879 | self.failUnless(p3 in h, "missing p3 in history.") |
880 | self.failUnless(CC0 in h, "missing spline curve in history.") |
881 | |
882 | cp=c.copy() |
883 | cpcp=cp.getControlPoints() |
884 | self.failUnless(not cp == c, "copy returns same spline curve.") |
885 | self.failUnless(not cp == CC0, "copy returns same spline curve.") |
886 | self.failUnless(c.isColocated(cp),"spline curve is not colocated with its copy.") |
887 | self.failUnless(not p3 == cpcp[0],"1st point of deep copy and souce are the same.") |
888 | self.failUnless(not p2 == cpcp[1],"2st point of deep copy and source are the same.") |
889 | self.failUnless(not p1 == cpcp[2],"3st point of deep copy and source are the same.") |
890 | self.failUnless(not p0 == cpcp[3],"4st point of deep copy and source are the same.") |
891 | |
892 | c.modifyBy(Dilation(-1.)) |
893 | cp=c.getControlPoints() |
894 | self.failUnless(c.isColocated(Spline(Point(0,0,0),Point(-1,-1,-1),Point(-2,-2,-2),Point(-3,-3,-3))),"inplace dilation is wrong.") |
895 | self.failUnless(p3 == cp[0],"1st new point after Dilation.") |
896 | self.failUnless(p2 == cp[1],"2nd new point after Dilation.") |
897 | self.failUnless(p1 == cp[2],"3rd new point after Dilation.") |
898 | self.failUnless(p0 == cp[3],"4th new point after Dilation.") |
899 | |
900 | dc=c.apply(Dilation(-1.)) |
901 | dccp=dc.getControlPoints() |
902 | self.failUnless(dc.isColocated(Spline(Point(0,0,0),Point(1,1,1),Point(2,2,2),Point(3,3,3))),"dilation is wrong.") |
903 | self.failUnless(dccp[0].isColocated(Point(3,3,3)),"1st point of Dilation is is wrongly located.") |
904 | self.failUnless(dccp[1].isColocated(Point(2,2,2)),"1st point of Dilation is is wrongly located.") |
905 | self.failUnless(dccp[2].isColocated(Point(1,1,1)),"1st point of Dilation is is wrongly located.") |
906 | self.failUnless(dccp[3].isColocated(Point(0,0,0)),"1st point of Dilation is is wrongly located.") |
907 | |
908 | def test_BezierCurve(self): |
909 | p0=Point(0,0,0,0.1) |
910 | p1=Point(1,1,1,0.2) |
911 | p2=Point(2,2,2,0.3) |
912 | p3=Point(3,3,3,0.4) |
913 | p4=Point(1,2,3) |
914 | |
915 | self.failUnlessRaises(ValueError,BezierCurve,p0) |
916 | c=BezierCurve(p0,p1,p2,p3) |
917 | |
918 | self.failUnless(len(c) == 4, "wrong spline curve length") |
919 | self.failUnless(c.getStartPoint()==p0, "wrong start point of spline curve") |
920 | self.failUnless(c.getEndPoint()==p3, "wrong end point of spline curve") |
921 | |
922 | self.failUnless(not c.isColocated(p1),"spline is colocated with point.") |
923 | self.failUnless(not c.isColocated(BezierCurve(p0,p1,p2)),"spline is colocated with spline of different length.") |
924 | self.failUnless(not c.isColocated(BezierCurve(p0,p1,p4,p3)),"spline is colocated with spline with different point.") |
925 | self.failUnless(c.isColocated(BezierCurve(p0,p1,p2,p3)),"spline is not colocated with spline with same points.") |
926 | self.failUnless(c.isColocated(BezierCurve(p3,p2,p1,p0)),"spline is not colocated with spline with same points but opposite direction.") |
927 | self.failUnless(not c.isColocated(Curve(p0,p1,p2,p3)),"spline curve is identified with curve.") |
928 | |
929 | co=c.getControlPoints() |
930 | self.failUnless(co[0]==p0, "1st control point is wrong.") |
931 | self.failUnless(co[1]==p1, "2nd control point is wrong.") |
932 | self.failUnless(co[2]==p2, "3rd control point is wrong.") |
933 | self.failUnless(co[3]==p3, "4th control point is wrong.") |
934 | |
935 | c.setLocalScale(3.) |
936 | co=c.getControlPoints() |
937 | self.failUnless(co[0].getLocalScale() == 3., "new local scale of 1st control point is wrong.") |
938 | self.failUnless(co[1].getLocalScale() == 3., "new local scale of 2nd control point is wrong.") |
939 | self.failUnless(co[2].getLocalScale() == 3., "new local scale of 3rd control point is wrong.") |
940 | self.failUnless(co[3].getLocalScale() == 3., "new local scale of 4th control point is wrong.") |
941 | |
942 | code=c.getGmshCommand() |
943 | self.failUnless(code == "Bezier(6) = {1, 2, 3, 4};", "gmsh command wrong.") |
944 | |
945 | h=c.getPrimitives() |
946 | self.failUnless(len(h) == 5, "number of primitives in history is wrong.") |
947 | self.failUnless(p0 in h, "missing p0 in history.") |
948 | self.failUnless(p1 in h, "missing p1 in history.") |
949 | self.failUnless(p2 in h, "missing p2 in history.") |
950 | self.failUnless(p3 in h, "missing p3 in history.") |
951 | self.failUnless(c in h, "missing spline curve in history.") |
952 | |
953 | cp=c.copy() |
954 | cpcp=cp.getControlPoints() |
955 | self.failUnless(not cp == c, "copy returns same spline curve.") |
956 | self.failUnless(c.isColocated(cp),"spline curve is not colocated with its copy.") |
957 | self.failUnless(not p0 == cpcp[0],"1st point of deep copy and source are the same.") |
958 | self.failUnless(not p1 == cpcp[1],"2st point of deep copy and source are the same.") |
959 | self.failUnless(not p2 == cpcp[2],"3st point of deep copy and source are the same.") |
960 | self.failUnless(not p3 == cpcp[3],"4st point of deep copy and source are the same.") |
961 | |
962 | c.modifyBy(Dilation(-1.)) |
963 | cp=c.getControlPoints() |
964 | self.failUnless(c.isColocated(BezierCurve(Point(0,0,0),Point(-1,-1,-1),Point(-2,-2,-2),Point(-3,-3,-3))),"inplace dilation is wrong.") |
965 | self.failUnless(p0 == cp[0],"1st new point after Dilation.") |
966 | self.failUnless(p1 == cp[1],"2nd new point after Dilation.") |
967 | self.failUnless(p2 == cp[2],"3rd new point after Dilation.") |
968 | self.failUnless(p3 == cp[3],"4th new point after Dilation.") |
969 | |
970 | dc=c.apply(Dilation(-1.)) |
971 | dccp=dc.getControlPoints() |
972 | self.failUnless(dc.isColocated(BezierCurve(Point(0,0,0),Point(1,1,1),Point(2,2,2),Point(3,3,3))),"dilation is wrong.") |
973 | self.failUnless(not p0 == dccp[0],"1st point of Dilation is identical to source.") |
974 | self.failUnless(not p1 == dccp[1],"2nd point of Dilation is identical to source.") |
975 | self.failUnless(not p2 == dccp[2],"3rd point of Dilation is identical to source.") |
976 | self.failUnless(not p3 == dccp[3],"4th point of Dilation is identical to source.") |
977 | |
978 | def test_BSpline(self): |
979 | p0=Point(0,0,0,0.1) |
980 | p1=Point(1,1,1,0.2) |
981 | p2=Point(2,2,2,0.3) |
982 | p3=Point(3,3,3,0.4) |
983 | p4=Point(1,2,3) |
984 | |
985 | self.failUnlessRaises(ValueError,BSpline,p0) |
986 | c=BSpline(p0,p1,p2,p3) |
987 | |
988 | self.failUnless(len(c) == 4, "wrong spline curve length") |
989 | self.failUnless(c.getStartPoint()==p0, "wrong start point of spline curve") |
990 | self.failUnless(c.getEndPoint()==p3, "wrong end point of spline curve") |
991 | |
992 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
993 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
994 | |
995 | self.failUnless(not c.isColocated(p1),"spline is colocated with point.") |
996 | self.failUnless(not c.isColocated(BSpline(p0,p1,p2)),"spline is colocated with spline of different length.") |
997 | self.failUnless(not c.isColocated(BSpline(p0,p1,p4,p3)),"spline is colocated with spline with different point.") |
998 | self.failUnless(c.isColocated(BSpline(p0,p1,p2,p3)),"spline is not colocated with spline with same points.") |
999 | self.failUnless(c.isColocated(BSpline(p3,p2,p1,p0)),"spline is not colocated with spline with same points but opposite direction.") |
1000 | self.failUnless(not c.isColocated(Curve(p0,p1,p2,p3)),"spline curve is identified with curve.") |
1001 | |
1002 | co=c.getControlPoints() |
1003 | self.failUnless(co[0]==p0, "1st control point is wrong.") |
1004 | self.failUnless(co[1]==p1, "2nd control point is wrong.") |
1005 | self.failUnless(co[2]==p2, "3rd control point is wrong.") |
1006 | self.failUnless(co[3]==p3, "4th control point is wrong.") |
1007 | |
1008 | c.setLocalScale(3.) |
1009 | co=c.getControlPoints() |
1010 | self.failUnless(co[0].getLocalScale() == 3., "new local scale of 1st control point is wrong.") |
1011 | self.failUnless(co[1].getLocalScale() == 3., "new local scale of 2nd control point is wrong.") |
1012 | self.failUnless(co[2].getLocalScale() == 3., "new local scale of 3rd control point is wrong.") |
1013 | self.failUnless(co[3].getLocalScale() == 3., "new local scale of 4th control point is wrong.") |
1014 | |
1015 | code=c.getGmshCommand() |
1016 | self.failUnless(code == "BSpline(6) = {1, 2, 3, 4};", "gmsh command wrong.") |
1017 | |
1018 | h=c.getPrimitives() |
1019 | self.failUnless(len(h) == 5, "number of primitives in history is wrong.") |
1020 | self.failUnless(p0 in h, "missing p0 in history.") |
1021 | self.failUnless(p1 in h, "missing p1 in history.") |
1022 | self.failUnless(p2 in h, "missing p2 in history.") |
1023 | self.failUnless(p3 in h, "missing p3 in history.") |
1024 | self.failUnless(c in h, "missing spline curve in history.") |
1025 | |
1026 | cp=c.copy() |
1027 | cpcp=cp.getControlPoints() |
1028 | self.failUnless(not cp == c, "copy returns same spline curve.") |
1029 | self.failUnless(c.isColocated(cp),"spline curve is not colocated with its copy.") |
1030 | self.failUnless(not p0 == cpcp[0],"1st point of deep copy and source are the same.") |
1031 | self.failUnless(not p1 == cpcp[1],"2st point of deep copy and source are the same.") |
1032 | self.failUnless(not p2 == cpcp[2],"3st point of deep copy and source are the same.") |
1033 | self.failUnless(not p3 == cpcp[3],"4st point of deep copy and source are the same.") |
1034 | |
1035 | c.modifyBy(Dilation(-1.)) |
1036 | cp=c.getControlPoints() |
1037 | self.failUnless(c.isColocated(BSpline(Point(0,0,0),Point(-1,-1,-1),Point(-2,-2,-2),Point(-3,-3,-3))),"inplace dilation is wrong.") |
1038 | self.failUnless(p0 == cp[0],"1st new point after Dilation.") |
1039 | self.failUnless(p1 == cp[1],"2nd new point after Dilation.") |
1040 | self.failUnless(p2 == cp[2],"3rd new point after Dilation.") |
1041 | self.failUnless(p3 == cp[3],"4th new point after Dilation.") |
1042 | |
1043 | dc=c.apply(Dilation(-1.)) |
1044 | dccp=dc.getControlPoints() |
1045 | self.failUnless(dc.isColocated(BSpline(Point(0,0,0),Point(1,1,1),Point(2,2,2),Point(3,3,3))),"dilation is wrong.") |
1046 | self.failUnless(not p0 == dccp[0],"1st point of Dilation is identical to source.") |
1047 | self.failUnless(dccp[0].isColocated(Point(0,0,0)),"1st point of Dilation is is wrongly located.") |
1048 | self.failUnless(not p1 == dccp[1],"2nd point of Dilation is identical to source.") |
1049 | self.failUnless(dccp[1].isColocated(Point(1,1,1)),"1st point of Dilation is is wrongly located.") |
1050 | self.failUnless(not p2 == dccp[2],"3rd point of Dilation is identical to source.") |
1051 | self.failUnless(dccp[2].isColocated(Point(2,2,2)),"1st point of Dilation is is wrongly located.") |
1052 | self.failUnless(not p3 == dccp[3],"4th point of Dilation is identical to source.") |
1053 | self.failUnless(dccp[3].isColocated(Point(3,3,3)),"1st point of Dilation is is wrongly located.") |
1054 | |
1055 | def test_ReverseBSpline(self): |
1056 | p0=Point(0,0,0,0.1) |
1057 | p1=Point(1,1,1,0.2) |
1058 | p2=Point(2,2,2,0.3) |
1059 | p3=Point(3,3,3,0.4) |
1060 | p4=Point(1,2,3) |
1061 | |
1062 | CC0=BSpline(p0,p1,p2,p3) |
1063 | c=-CC0 |
1064 | |
1065 | self.failUnless(len(c) == 4, "wrong spline curve length") |
1066 | self.failUnless(c.getStartPoint()==p3, "wrong start point of spline curve") |
1067 | self.failUnless(c.getEndPoint()==p0, "wrong end point of spline curve") |
1068 | |
1069 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
1070 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
1071 | |
1072 | self.failUnless(not c.isColocated(p1),"spline is colocated with point.") |
1073 | self.failUnless(not c.isColocated(BSpline(p0,p1,p2)),"spline is colocated with spline of different length.") |
1074 | self.failUnless(not c.isColocated(BSpline(p0,p1,p4,p3)),"spline is colocated with spline with different point.") |
1075 | self.failUnless(c.isColocated(BSpline(p0,p1,p2,p3)),"spline is not colocated with spline with same points.") |
1076 | self.failUnless(c.isColocated(BSpline(p3,p2,p1,p0)),"spline is not colocated with spline with same points but opposite direction.") |
1077 | self.failUnless(not c.isColocated(Curve(p0,p1,p2,p3)),"spline curve is identified with curve.") |
1078 | |
1079 | co=c.getControlPoints() |
1080 | self.failUnless(co[0]==p3, "1st control point is wrong.") |
1081 | self.failUnless(co[1]==p2, "2nd control point is wrong.") |
1082 | self.failUnless(co[2]==p1, "3rd control point is wrong.") |
1083 | self.failUnless(co[3]==p0, "4th control point is wrong.") |
1084 | |
1085 | c.setLocalScale(3.) |
1086 | co=c.getControlPoints() |
1087 | self.failUnless(co[0].getLocalScale() == 3., "new local scale of 1st control point is wrong.") |
1088 | self.failUnless(co[1].getLocalScale() == 3., "new local scale of 2nd control point is wrong.") |
1089 | self.failUnless(co[2].getLocalScale() == 3., "new local scale of 3rd control point is wrong.") |
1090 | self.failUnless(co[3].getLocalScale() == 3., "new local scale of 4th control point is wrong.") |
1091 | |
1092 | code=c.getGmshCommand() |
1093 | self.failUnless(code == "BSpline(6) = {1, 2, 3, 4};", "gmsh command wrong.") |
1094 | |
1095 | h=c.getPrimitives() |
1096 | self.failUnless(len(h) == 5, "number of primitives in history is wrong.") |
1097 | self.failUnless(p0 in h, "missing p0 in history.") |
1098 | self.failUnless(p1 in h, "missing p1 in history.") |
1099 | self.failUnless(p2 in h, "missing p2 in history.") |
1100 | self.failUnless(p3 in h, "missing p3 in history.") |
1101 | self.failUnless(CC0 in h, "missing spline curve in history.") |
1102 | |
1103 | cp=c.copy() |
1104 | cpcp=cp.getControlPoints() |
1105 | self.failUnless(not cp == c, "copy returns same spline curve.") |
1106 | self.failUnless(c.isColocated(cp),"spline curve is not colocated with its copy.") |
1107 | self.failUnless(not p0 == cpcp[0],"1st point of deep copy and source are the same.") |
1108 | self.failUnless(not p1 == cpcp[1],"2st point of deep copy and source are the same.") |
1109 | self.failUnless(not p2 == cpcp[2],"3st point of deep copy and source are the same.") |
1110 | self.failUnless(not p3 == cpcp[3],"4st point of deep copy and source are the same.") |
1111 | |
1112 | c.modifyBy(Dilation(-1.)) |
1113 | cp=c.getControlPoints() |
1114 | self.failUnless(c.isColocated(BSpline(Point(0,0,0),Point(-1,-1,-1),Point(-2,-2,-2),Point(-3,-3,-3))),"inplace dilation is wrong.") |
1115 | self.failUnless(p3 == cp[0],"1st new point after Dilation.") |
1116 | self.failUnless(p2 == cp[1],"2nd new point after Dilation.") |
1117 | self.failUnless(p1 == cp[2],"3rd new point after Dilation.") |
1118 | self.failUnless(p0 == cp[3],"4th new point after Dilation.") |
1119 | |
1120 | dc=c.apply(Dilation(-1.)) |
1121 | dccp=dc.getControlPoints() |
1122 | self.failUnless(dc.isColocated(BSpline(Point(0,0,0),Point(1,1,1),Point(2,2,2),Point(3,3,3))),"dilation is wrong.") |
1123 | self.failUnless(not p0 == dccp[0],"1st point of Dilation is identical to source.") |
1124 | self.failUnless(dccp[0].isColocated(Point(3,3,3)),"1st point of Dilation is is wrongly located.") |
1125 | self.failUnless(not p1 == dccp[1],"2nd point of Dilation is identical to source.") |
1126 | self.failUnless(dccp[1].isColocated(Point(2,2,2)),"1st point of Dilation is is wrongly located.") |
1127 | self.failUnless(not p2 == dccp[2],"3rd point of Dilation is identical to source.") |
1128 | self.failUnless(dccp[2].isColocated(Point(1,1,1)),"1st point of Dilation is is wrongly located.") |
1129 | self.failUnless(not p3 == dccp[3],"4th point of Dilation is identical to source.") |
1130 | self.failUnless(dccp[3].isColocated(Point(0,0,0)),"1st point of Dilation is is wrongly located.") |
1131 | |
1132 | def test_LineSegment(self): |
1133 | p0=Point(0,0,0,0.1) |
1134 | p1=Point(1,1,1,0.2) |
1135 | p4=Point(1,2,3) |
1136 | |
1137 | self.failUnlessRaises(TypeError,Line,p0) |
1138 | self.failUnlessRaises(TypeError,Line,p0,p1,p4) |
1139 | |
1140 | c=Line(p0,p1) |
1141 | |
1142 | self.failUnless(len(c) == 2, "wrong spline curve length") |
1143 | self.failUnless(c.getStartPoint()==p0, "wrong start point of spline curve") |
1144 | self.failUnless(c.getEndPoint()==p1, "wrong end point of spline curve") |
1145 | |
1146 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
1147 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
1148 | |
1149 | self.failUnless(not c.isColocated(p1),"spline is colocated with point.") |
1150 | self.failUnless(not c.isColocated(Line(p0,p4)),"spline is colocated with spline with different point.") |
1151 | self.failUnless(c.isColocated(Line(p0,p1)),"spline is not colocated with spline with same points.") |
1152 | self.failUnless(c.isColocated(Line(p1,p0)),"spline is not colocated with spline with same points but opposite direction.") |
1153 | self.failUnless(not c.isColocated(Curve(p0,p1,p4)),"spline curve is identified with curve.") |
1154 | |
1155 | co=c.getControlPoints() |
1156 | self.failUnless(co[0]==p0, "1st control point is wrong.") |
1157 | self.failUnless(co[1]==p1, "2nd control point is wrong.") |
1158 | |
1159 | c.setLocalScale(3.) |
1160 | co=c.getControlPoints() |
1161 | self.failUnless(co[0].getLocalScale() == 3., "new local scale of 1st control point is wrong.") |
1162 | self.failUnless(co[1].getLocalScale() == 3., "new local scale of 2nd control point is wrong.") |
1163 | |
1164 | code=c.getGmshCommand() |
1165 | self.failUnless(code == "Line(4) = {1, 2};", "gmsh command wrong.") |
1166 | |
1167 | h=c.getPrimitives() |
1168 | self.failUnless(len(h) == 3, "number of primitives in history is wrong.") |
1169 | self.failUnless(p0 in h, "missing p0 in history.") |
1170 | self.failUnless(p1 in h, "missing p1 in history.") |
1171 | self.failUnless(c in h, "missing spline curve in history.") |
1172 | |
1173 | cp=c.copy() |
1174 | cpcp=cp.getControlPoints() |
1175 | self.failUnless(not cp == c, "copy returns same spline curve.") |
1176 | self.failUnless(c.isColocated(cp),"spline curve is not colocated with its copy.") |
1177 | self.failUnless(not p0 == cpcp[0],"1st point of deep copy and source are the same.") |
1178 | self.failUnless(not p1 == cpcp[1],"2st point of deep copy and source are the same.") |
1179 | |
1180 | c.modifyBy(Dilation(-1.)) |
1181 | cp=c.getControlPoints() |
1182 | self.failUnless(c.isColocated(Line(Point(0,0,0),Point(-1,-1,-1))),"inplace dilation is wrong.") |
1183 | self.failUnless(p0 == cp[0],"1st new point after Dilation.") |
1184 | self.failUnless(p1 == cp[1],"2nd new point after Dilation.") |
1185 | |
1186 | dc=c.apply(Dilation(-1.)) |
1187 | dccp=dc.getControlPoints() |
1188 | self.failUnless(dc.isColocated(Line(Point(0,0,0),Point(1,1,1))),"dilation is wrong.") |
1189 | self.failUnless(not p0 == dccp[0],"1st point of Dilation is identical to source.") |
1190 | self.failUnless(dccp[0].isColocated(Point(0,0,0)),"1st point of Dilation is is wrongly located.") |
1191 | self.failUnless(not p1 == dccp[1],"2nd point of Dilation is identical to source.") |
1192 | self.failUnless(dccp[1].isColocated(Point(1,1,1)),"2st point of Dilation is is wrongly located.") |
1193 | |
1194 | def test_ReverseLineSegment(self): |
1195 | p0=Point(0,0,0,0.1) |
1196 | p1=Point(1,1,1,0.2) |
1197 | p4=Point(1,2,3) |
1198 | |
1199 | self.failUnlessRaises(TypeError,Line,p0) |
1200 | self.failUnlessRaises(TypeError,Line,p0,p1,p4) |
1201 | |
1202 | CC0=Line(p0,p1) |
1203 | c=-CC0 |
1204 | |
1205 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
1206 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
1207 | |
1208 | self.failUnless(len(c) == 2, "wrong spline curve length") |
1209 | self.failUnless(c.getStartPoint()==p1, "wrong start point of spline curve") |
1210 | self.failUnless(c.getEndPoint()==p0, "wrong end point of spline curve") |
1211 | |
1212 | self.failUnless(not c.isColocated(p1),"spline is colocated with point.") |
1213 | self.failUnless(not c.isColocated(Line(p0,p4)),"spline is colocated with spline with different point.") |
1214 | self.failUnless(c.isColocated(Line(p0,p1)),"spline is not colocated with spline with same points.") |
1215 | self.failUnless(c.isColocated(Line(p1,p0)),"spline is not colocated with spline with same points but opposite direction.") |
1216 | self.failUnless(not c.isColocated(Curve(p0,p1,p4)),"spline curve is identified with curve.") |
1217 | |
1218 | co=c.getControlPoints() |
1219 | self.failUnless(co[0]==p1, "1st control point is wrong.") |
1220 | self.failUnless(co[1]==p0, "2nd control point is wrong.") |
1221 | |
1222 | c.setLocalScale(3.) |
1223 | co=c.getControlPoints() |
1224 | self.failUnless(co[0].getLocalScale() == 3., "new local scale of 1st control point is wrong.") |
1225 | self.failUnless(co[1].getLocalScale() == 3., "new local scale of 2nd control point is wrong.") |
1226 | |
1227 | code=c.getGmshCommand() |
1228 | self.failUnless(code == "Line(4) = {1, 2};", "gmsh command wrong.") |
1229 | |
1230 | h=c.getPrimitives() |
1231 | self.failUnless(len(h) == 3, "number of primitives in history is wrong.") |
1232 | self.failUnless(p0 in h, "missing p0 in history.") |
1233 | self.failUnless(p1 in h, "missing p1 in history.") |
1234 | self.failUnless(CC0 in h, "missing spline curve in history.") |
1235 | |
1236 | cp=c.copy() |
1237 | cpcp=cp.getControlPoints() |
1238 | self.failUnless(not cp == c, "copy returns same spline curve.") |
1239 | self.failUnless(c.isColocated(cp),"spline curve is not colocated with its copy.") |
1240 | self.failUnless(not p0 == cpcp[0],"1st point of deep copy and source are the same.") |
1241 | self.failUnless(not p1 == cpcp[1],"2st point of deep copy and source are the same.") |
1242 | |
1243 | c.modifyBy(Dilation(-1.)) |
1244 | cp=c.getControlPoints() |
1245 | self.failUnless(c.isColocated(Line(Point(0,0,0),Point(-1,-1,-1))),"inplace dilation is wrong.") |
1246 | self.failUnless(p1 == cp[0],"1st new point after Dilation.") |
1247 | self.failUnless(p0 == cp[1],"2nd new point after Dilation.") |
1248 | |
1249 | dc=c.apply(Dilation(-1.)) |
1250 | dccp=dc.getControlPoints() |
1251 | self.failUnless(dc.isColocated(Line(Point(0,0,0),Point(1,1,1))),"dilation is wrong.") |
1252 | self.failUnless(not p0 == dccp[0],"1st point of Dilation is identical to source.") |
1253 | self.failUnless(dccp[0].isColocated(Point(1,1,1)),"1st point of Dilation is is wrongly located.") |
1254 | self.failUnless(not p1 == dccp[1],"2nd point of Dilation is identical to source.") |
1255 | self.failUnless(dccp[1].isColocated(Point(0,0,0)),"2st point of Dilation is is wrongly located.") |
1256 | |
1257 | def test_Arc(self): |
1258 | center=Point(0,0,0,0.1) |
1259 | p_start=Point(1,1,1,0.2) |
1260 | p_end=Point(1,2,3) |
1261 | p4=Point(10,2,3) |
1262 | |
1263 | self.failUnlessRaises(TypeError,Arc,Primitive()) |
1264 | |
1265 | c=Arc(center,p_start,p_end) |
1266 | |
1267 | self.failUnless(c.getCenterPoint()==center, "wrong center point") |
1268 | self.failUnless(c.getStartPoint()==p_start, "wrong start point") |
1269 | self.failUnless(c.getEndPoint()==p_end, "wrong end point") |
1270 | |
1271 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
1272 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
1273 | |
1274 | code=c.getGmshCommand() |
1275 | self.failUnless(code == "Circle(6) = {2, 1, 3};", "gmsh command wrong.") |
1276 | |
1277 | self.failUnless(not c.isColocated(p4),"spline is colocated with point.") |
1278 | self.failUnless(not c.isColocated(Arc(p4,p_start,p_end)),"spline is colocated with spline with differnt center point.") |
1279 | self.failUnless(not c.isColocated(Arc(center,p4,p_end)),"spline is colocated with spline with differnt start point.") |
1280 | self.failUnless(not c.isColocated(Arc(center,p_start,p4)),"spline is colocated with spline with differnt end point.") |
1281 | self.failUnless(c.isColocated(Arc(center,p_start,p_end)),"spline is not colocated with spline with same points.") |
1282 | self.failUnless(c.isColocated(Arc(center,p_end,p_start)),"spline is not colocated with spline with same points but opposite direction.") |
1283 | self.failUnless(not c.isColocated(Curve(center,p_start,p_end)),"spline curve is identified with curve.") |
1284 | |
1285 | h=c.getPrimitives() |
1286 | self.failUnless(len(h) == 4, "number of primitives in history is wrong.") |
1287 | self.failUnless(center in h, "missing center in history.") |
1288 | self.failUnless(p_start in h, "missing p_start in history.") |
1289 | self.failUnless(p_end in h, "missing p_end in history.") |
1290 | self.failUnless(c in h, "missing spline curve in history.") |
1291 | |
1292 | |
1293 | c.setLocalScale(3.) |
1294 | self.failUnless(c.getCenterPoint().getLocalScale() == 3., "new local scale of center point is wrong.") |
1295 | self.failUnless(c.getStartPoint().getLocalScale() == 3., "new local scale of start point is wrong.") |
1296 | self.failUnless(c.getEndPoint().getLocalScale() == 3., "new local scale of end point is wrong.") |
1297 | |
1298 | cp=c.copy() |
1299 | self.failUnless(isinstance(cp,Arc), "copy returns is not an arc.") |
1300 | self.failUnless(not cp == c, "copy returns same arc.") |
1301 | self.failUnless(cp.isColocated(Arc(center,p_start,p_end)),"arc is not colocated with its copy.") |
1302 | self.failUnless(not cp.getCenterPoint()==center, "deep copy has same center point like source") |
1303 | self.failUnless(not cp.getStartPoint()==p_start, "deep copy has same start point like source") |
1304 | self.failUnless(not cp.getEndPoint()==p_end, "deep copy has same end point like source") |
1305 | |
1306 | c.modifyBy(Dilation(-1.)) |
1307 | self.failUnless(c.isColocated(Arc(Point(0,0,0),Point(-1,-1,-1),Point(-1,-2,-3))),"inplace dilation is wrong.") |
1308 | self.failUnless(c.getCenterPoint() == center,"wrong center point after dilation.") |
1309 | self.failUnless(c.getStartPoint() == p_start,"wrong start point after dilation.") |
1310 | self.failUnless(c.getEndPoint() == p_end,"wrong end point after dilation.") |
1311 | |
1312 | dc=c.apply(Dilation(-1.)) |
1313 | self.failUnless(dc.isColocated(Arc(Point(0,0,0),Point(1,1,1),Point(1,2,3))),"dilation is wrong.") |
1314 | self.failUnless(not dc.getCenterPoint() == center,"center point of dilation is identical to source.") |
1315 | self.failUnless(dc.getCenterPoint().isColocated(Point(0,0,0)),"center point of dilation is wrong.") |
1316 | self.failUnless(not dc.getStartPoint() == p_start,"start point of dilation is identical to source.") |
1317 | self.failUnless(dc.getStartPoint().isColocated(Point(1,1,1)),"start point of dilation is wrong.") |
1318 | self.failUnless(not dc.getEndPoint() == p_end,"end point of dilation is identical to source.") |
1319 | self.failUnless(dc.getEndPoint().isColocated(Point(1,2,3)),"end point of dilation is wrong.") |
1320 | |
1321 | def test_ReverseArc(self): |
1322 | center=Point(0,0,0,0.1) |
1323 | p_start=Point(1,1,1,0.2) |
1324 | p_end=Point(1,2,3) |
1325 | p4=Point(10,2,3) |
1326 | |
1327 | self.failUnlessRaises(TypeError,Arc,Primitive()) |
1328 | |
1329 | CC0=Arc(center,p_start,p_end) |
1330 | c=-CC0 |
1331 | |
1332 | self.failUnless(c.getCenterPoint()==center, "wrong center point") |
1333 | self.failUnless(c.getStartPoint()==p_end, "wrong start point") |
1334 | self.failUnless(c.getEndPoint()==p_start, "wrong end point") |
1335 | |
1336 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
1337 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
1338 | |
1339 | code=c.getGmshCommand() |
1340 | self.failUnless(code == "Circle(6) = {2, 1, 3};", "gmsh command wrong.") |
1341 | |
1342 | self.failUnless(not c.isColocated(p4),"spline is colocated with point.") |
1343 | self.failUnless(not c.isColocated(Arc(p4,p_start,p_end)),"spline is colocated with spline with differnt center point.") |
1344 | self.failUnless(not c.isColocated(Arc(center,p4,p_end)),"spline is colocated with spline with differnt start point.") |
1345 | self.failUnless(not c.isColocated(Arc(center,p_start,p4)),"spline is colocated with spline with differnt end point.") |
1346 | self.failUnless(c.isColocated(Arc(center,p_start,p_end)),"spline is not colocated with spline with same points.") |
1347 | self.failUnless(c.isColocated(Arc(center,p_end,p_start)),"spline is not colocated with spline with same points but opposite direction.") |
1348 | self.failUnless(not c.isColocated(Curve(center,p_start,p_end)),"spline curve is identified with curve.") |
1349 | |
1350 | h=c.getPrimitives() |
1351 | self.failUnless(len(h) == 4, "number of primitives in history is wrong.") |
1352 | self.failUnless(center in h, "missing center in history.") |
1353 | self.failUnless(p_start in h, "missing p_start in history.") |
1354 | self.failUnless(p_end in h, "missing p_end in history.") |
1355 | self.failUnless(CC0 in h, "missing spline curve in history.") |
1356 | |
1357 | |
1358 | c.setLocalScale(3.) |
1359 | self.failUnless(c.getCenterPoint().getLocalScale() == 3., "new local scale of center point is wrong.") |
1360 | self.failUnless(c.getStartPoint().getLocalScale() == 3., "new local scale of start point is wrong.") |
1361 | self.failUnless(c.getEndPoint().getLocalScale() == 3., "new local scale of end point is wrong.") |
1362 | |
1363 | cp=c.copy() |
1364 | self.failUnless(isinstance(cp,ReverseArc), "copy returns is not an arc.") |
1365 | self.failUnless(not cp == c, "copy returns same arc.") |
1366 | self.failUnless(cp.isColocated(Arc(center,p_end,p_start)),"arc is not colocated with its copy.") |
1367 | self.failUnless(not cp.getCenterPoint()==center, "deep copy has same center point like source") |
1368 | self.failUnless(not cp.getStartPoint()==p_start, "deep copy has same start point like source") |
1369 | self.failUnless(not cp.getEndPoint()==p_end, "deep copy has same end point like source") |
1370 | |
1371 | c.modifyBy(Dilation(-1.)) |
1372 | self.failUnless(c.isColocated(Arc(Point(0,0,0),Point(-1,-1,-1),Point(-1,-2,-3))),"inplace dilation is wrong.") |
1373 | self.failUnless(c.getCenterPoint() == center,"wrong center point after dilation.") |
1374 | self.failUnless(c.getStartPoint() == p_end,"wrong start point after dilation.") |
1375 | self.failUnless(c.getEndPoint() == p_start,"wrong end point after dilation.") |
1376 | |
1377 | dc=c.apply(Dilation(-1.)) |
1378 | self.failUnless(dc.isColocated(Arc(Point(0,0,0),Point(1,1,1),Point(1,2,3))),"dilation is wrong.") |
1379 | self.failUnless(not dc.getCenterPoint() == center,"center point of dilation is identical to source.") |
1380 | self.failUnless(dc.getCenterPoint().isColocated(Point(0,0,0)),"center point of dilation is wrong.") |
1381 | self.failUnless(not dc.getStartPoint() == p_start,"start point of dilation is identical to source.") |
1382 | self.failUnless(dc.getStartPoint().isColocated(Point(1,2,3)),"start point of dilation is wrong.") |
1383 | self.failUnless(not dc.getEndPoint() == p_end,"end point of dilation is identical to source.") |
1384 | self.failUnless(dc.getEndPoint().isColocated(Point(1,1,1)),"end point of dilation is wrong.") |
1385 | |
1386 | def test_CurveLoop(self): |
1387 | p0=Point(0,0,0,0.1) |
1388 | p1=Point(1,1,1,0.2) |
1389 | p2=Point(2,2,2,0.3) |
1390 | p3=Point(3,3,3,0.4) |
1391 | p4=Point(1,2,3) |
1392 | p5=Point(10,20,3) |
1393 | p6=Point(1,2,30) |
1394 | |
1395 | l01=Line(p0,p1) |
1396 | l12=Arc(p3,p1,p2) |
1397 | l20=Spline(p2,p4,p0) |
1398 | |
1399 | lx=Line(p2,p3) |
1400 | ly=Line(p3,p1) |
1401 | |
1402 | c=CurveLoop(l01,l12,l20) |
1403 | # self.failUnlessRaises(ValueError,CurveLoop,l01,lx,l20) |
1404 | # self.failUnlessRaises(ValueError,CurveLoop,l01,l20,l20) |
1405 | # self.failUnlessRaises(ValueError,CurveLoop,l01,l20,ly) |
1406 | |
1407 | c=CurveLoop(l01,l20,l12) |
1408 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
1409 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
1410 | |
1411 | code=c.getGmshCommand() |
1412 | self.failUnless(code == "Line Loop(14) = {8, 10, 9};", "gmsh command wrong.") |
1413 | |
1414 | self.failUnless(not c.isColocated(p4),"CurveLoop is colocated with point.") |
1415 | self.failUnless(c.isColocated(c),"CurveLoop is not colocated with its self.") |
1416 | self.failUnless(c.isColocated(CurveLoop(l01,l12,l20)),"CurveLoop is not colocated with its copy.") |
1417 | self.failUnless(c.isColocated(CurveLoop(l20,l01,l12)),"CurveLoop is not colocated with its copy with shifted points.") |
1418 | self.failUnless(c.isColocated(CurveLoop(l20,l12,l01)),"CurveLoop is not colocated with its copy with shuffled points.") |
1419 | self.failUnless(not c.isColocated(CurveLoop(lx,ly,l12)),"CurveLoop is colocated with different CurveLoop.") |
1420 | |
1421 | self.failUnless(len(c) == 3, "wrong length") |
1422 | |
1423 | c.setLocalScale(3.) |
1424 | self.failUnless(p0.getLocalScale()==3., "p0 has wrong local scale.") |
1425 | self.failUnless(p1.getLocalScale()==3., "p1 has wrong local scale.") |
1426 | self.failUnless(p2.getLocalScale()==3., "p2 has wrong local scale.") |
1427 | self.failUnless(p4.getLocalScale()==3., "p4 has wrong local scale.") |
1428 | |
1429 | |
1430 | cc=c.getCurves() |
1431 | self.failUnless(len(cc) == 3, "too many curves.") |
1432 | self.failUnless(l01 in cc, "l01 is missing") |
1433 | self.failUnless(l12 in cc, "l12 is missing") |
1434 | self.failUnless(l20 in cc, "l20 is missing") |
1435 | |
1436 | p=c.getPrimitives() |
1437 | self.failUnless(len(p) == 9, "too many primitives.") |
1438 | self.failUnless(l01 in p, "l01 is missing") |
1439 | self.failUnless(l12 in p, "l21 is missing") |
1440 | self.failUnless(l20 in p, "l20 is missing") |
1441 | self.failUnless(p0 in p, "p0 is missing") |
1442 | self.failUnless(p1 in p, "p1 is missing") |
1443 | self.failUnless(p2 in p, "p2 is missing") |
1444 | self.failUnless(p3 in p, "p3 is missing") |
1445 | self.failUnless(p4 in p, "p4 is missing") |
1446 | |
1447 | cp=c.copy() |
1448 | self.failUnless(isinstance(cp,CurveLoop), "copy returns is not an arc.") |
1449 | self.failUnless(not cp == c, "copy equals source") |
1450 | self.failUnless(cp.isColocated(c),"copy is not colocated with its source.") |
1451 | cc=cp.getCurves() |
1452 | self.failUnless(len(cc) == 3, "too many primitives in copy.") |
1453 | self.failUnless(not l01 in cc,"copy uses l01.") |
1454 | self.failUnless(not l12 in cc,"copy uses l12.") |
1455 | self.failUnless(not l20 in cc,"copy uses l20.") |
1456 | |
1457 | p0_m=Point(0,0,0) |
1458 | p1_m=Point(-1,-1,-1) |
1459 | p2_m=Point(-2,-2,-2) |
1460 | p3_m=Point(-3,-3,-3) |
1461 | p4_m=Point(-1,-2,-3) |
1462 | |
1463 | l01_m=Line(p0_m,p1_m) |
1464 | l12_m=Arc(p3_m,p1_m,p2_m) |
1465 | l20_m=Spline(p2_m,p4_m,p0_m) |
1466 | |
1467 | dc=c.apply(Dilation(-1.)) |
1468 | self.failUnless(dc.isColocated(CurveLoop(l01_m,l12_m,l20_m)),"dilation is wrong.") |
1469 | cc=dc.getCurves() |
1470 | self.failUnless(len(cc) == 3, "too many primitives in dilation result.") |
1471 | self.failUnless(not l01 in cc,"l01 is in dilation result.") |
1472 | self.failUnless(not l12 in cc,"l12 is in dilation result.") |
1473 | self.failUnless(not l20 in cc,"l20 is in dilation result.") |
1474 | |
1475 | c.modifyBy(Dilation(-1.)) |
1476 | self.failUnless(c.isColocated(CurveLoop(l01_m,l12_m,l20_m)),"inplace dilation is wrong.") |
1477 | cc=c.getCurves() |
1478 | self.failUnless(len(cc) == 3, "too many primitives in modified object.") |
1479 | self.failUnless(l01 in cc,"l01 missed in modified object.") |
1480 | self.failUnless(cc[cc.index(l01)].hasSameOrientation(l01),"l01 in modified object has wrong orientation.") |
1481 | self.failUnless(l12 in cc,"l12 missed in modified object.") |
1482 | self.failUnless(cc[cc.index(l12)].hasSameOrientation(l12),"l12 in modified object has wrong orientation.") |
1483 | self.failUnless(l20 in cc,"l20 missed in modified object.") |
1484 | self.failUnless(cc[cc.index(l20)].hasSameOrientation(l20),"l20 in modified object has wrong orientation.") |
1485 | |
1486 | def test_ReverseCurveLoop(self): |
1487 | p0=Point(0,0,0,0.1) |
1488 | p1=Point(1,1,1,0.2) |
1489 | p2=Point(2,2,2,0.3) |
1490 | p3=Point(3,3,3,0.4) |
1491 | p4=Point(1,2,3) |
1492 | p5=Point(10,20,3) |
1493 | p6=Point(1,2,30) |
1494 | |
1495 | l01=Line(p0,p1) |
1496 | l12=Arc(p3,p1,p2) |
1497 | l20=Spline(p2,p4,p0) |
1498 | |
1499 | lx=Line(p2,p3) |
1500 | ly=Line(p3,p1) |
1501 | |
1502 | CC0=CurveLoop(l01,l20,l12) |
1503 | c=-CC0 |
1504 | |
1505 | self.failUnless(c.hasSameOrientation(c),"has not same orientation like itself") |
1506 | self.failUnless(not c.hasSameOrientation(-c),"has same orientation like -itself") |
1507 | |
1508 | code=c.getGmshCommand() |
1509 | self.failUnless(code == "Line Loop(13) = {8, 10, 9};", "gmsh command wrong.") |
1510 | |
1511 | |
1512 | self.failUnless(not c.isColocated(p4),"-CurveLoop is colocated with point.") |
1513 | self.failUnless(c.isColocated(c),"-CurveLoop is not colocated with its self.") |
1514 | self.failUnless(c.isColocated(CurveLoop(l01,l12,l20)),"-CurveLoop is not colocated with its copy.") |
1515 | self.failUnless(c.isColocated(CurveLoop(l20,l01,l12)),"-CurveLoop is not colocated with its copy with shifted points.") |
1516 | self.failUnless(c.isColocated(CurveLoop(l20,l12,l01)),"-CurveLoop is not colocated with its copy with shuffled points.") |
1517 | self.failUnless(not c.isColocated(CurveLoop(lx,ly,l12)),"-CurveLoop is colocated with different CurveLoop.") |
1518 | |
1519 | self.failUnless(len(c) == 3, "wrong length") |
1520 | |
1521 | c.setLocalScale(3.) |
1522 | self.failUnless(p0.getLocalScale()==3., "p0 has wrong local scale.") |
1523 | self.failUnless(p1.getLocalScale()==3., "p1 has wrong local scale.") |
1524 | self.failUnless(p2.getLocalScale()==3., "p2 has wrong local scale.") |
1525 | self.failUnless(p4.getLocalScale()==3., "p4 has wrong local scale.") |
1526 | |
1527 | |
1528 | cc=c.getCurves() |
1529 | self.failUnless(len(cc) == 3, "too many curves.") |
1530 | self.failUnless(l01 in cc, "l01 is missing") |
1531 | self.failUnless(l12 in cc, "l12 is missing") |
1532 | self.failUnless(l20 in cc, "l20 is missing") |
1533 | |
1534 | p=c.getPrimitives() |
1535 | self.failUnless(len(p) == 9, "too many primitives.") |
1536 | self.failUnless(l01 in p, "l01 is missing") |
1537 | self.failUnless(l12 in p, "l21 is missing") |
1538 | self.failUnless(l20 in p, "l20 is missing") |
1539 | self.failUnless(p0 in p, "p0 is missing") |
1540 | self.failUnless(p1 in p, "p1 is missing") |
1541 | self.failUnless(p2 in p, "p2 is missing") |
1542 | self.failUnless(p3 in p, "p3 is missing") |
1543 | self.failUnless(p4 in p, "p4 is missing") |
1544 | |
1545 | cp=c.copy() |
1546 | self.failUnless(isinstance(cp,ReverseCurveLoop), "copy returns is not an ReverseCurveLoop.") |
1547 | self.failUnless(not cp == c, "copy equals source") |
1548 | self.failUnless(cp.isColocated(c),"copy is not colocated with its source.") |
1549 | cc=cp.getCurves() |
1550 | self.failUnless(len(cc) == 3, "too many primitives in copy.") |
1551 | self.failUnless(not l01 in cc,"copy uses l01.") |
1552 | self.failUnless(not l12 in cc,"copy uses l12.") |
1553 | self.failUnless(not l20 in cc,"copy uses l20.") |
1554 | |
1555 | p0_m=Point(0,0,0) |
1556 | p1_m=Point(-1,-1,-1) |
1557 | p2_m=Point(-2,-2,-2) |
1558 | p3_m=Point(-3,-3,-3) |
1559 | p4_m=Point(-1,-2,-3) |
1560 | |
1561 | l01_m=Line(p0_m,p1_m) |
1562 | l12_m=Arc(p3_m,p1_m,p2_m) |
1563 | l20_m=Spline(p2_m,p4_m,p0_m) |
1564 | |
1565 | dc=c.apply(Dilation(-1.)) |
1566 | self.failUnless(dc.isColocated(CurveLoop(l01_m,l12_m,l20_m)),"dilation is wrong.") |
1567 | cc=dc.getCurves() |
1568 | self.failUnless(len(cc) == 3, "too many primitives in dilation result.") |
1569 | self.failUnless(not l01 in cc,"l01 is in dilation result.") |
1570 | self.failUnless(not l12 in cc,"l12 is in dilation result.") |
1571 | self.failUnless(not l20 in cc,"l20 is in dilation result.") |
1572 | |
1573 | c.modifyBy(Dilation(-1.)) |
1574 | self.failUnless(c.isColocated(CurveLoop(l01_m,l12_m,l20_m)),"inplace dilation is wrong.") |
1575 | cc=c.getCurves() |
1576 | self.failUnless(len(cc) == 3, "too many primitives in modified object.") |
1577 | self.failUnless(l01 in cc,"l01 missed in modified object.") |
1578 | self.failUnless(cc[cc.index(l01)].hasSameOrientation(-l01),"l01 in modified object has wrong orientation.") |
1579 | self.failUnless(l12 in cc,"l12 missed in modified object.") |
1580 | self.failUnless(cc[cc.index(l12)].hasSameOrientation(-l12),"l12 in modified object has wrong orientation.") |
1581 | self.failUnless(l20 in cc,"l20 missed in modified object.") |
1582 | self.failUnless(cc[cc.index(l20)].hasSameOrientation(-l20),"l20 in modified object has wrong orientation.") |
1583 | |
1584 | def test_RuledSurface(self): |
1585 | p0=Point(0,0,0,0.1) |
1586 | p1=Point(1,1,1,0.2) |
1587 | p2=Point(2,2,2,0.3) |
1588 | p3=Point(3,3,3,0.4) |
1589 | p4=Point(1,2,3) |
1590 | p5=Point(10,20,3) |
1591 | p6=Point(1,2,30) |
1592 | |
1593 | l01=Line(p0,p1) |
1594 | l12_1=Arc(p3,p1,p2) |
1595 | l12_2_1=Spline(p1,p3,p4) |
1596 | l12_2_2=Spline(p4,p5,p2) |
1597 | l12_3=Line(p1,p2) |
1598 | l20=Spline(p2,p4,p0) |
1599 | |
1600 | cl1=CurveLoop(l01,l12_1,l20) |
1601 | cl2=CurveLoop(l01,l12_2_1,l12_2_2,l20) |
1602 | cl3=CurveLoop(l01,l12_3,l20) |
1603 | |
1604 | self.failUnlessRaises(TypeError,RuledSurface,l01) |
1605 | |
1606 | s=RuledSurface(cl1) |
1607 | |
1608 | cl=s.getBoundaryLoop() |
1609 | self.failUnless(cl == cl1, " wrong boundary loops") |
1610 | self.failUnless(cl.hasSameOrientation(cl1),"cl1 has incorrect orientation.") |
1611 | |
1612 | self.failUnless(s.hasSameOrientation(s),"has not same orientation like itself") |
1613 | self.failUnless(not s.hasSameOrientation(-s),"has same orientation like -itself") |
1614 | |
1615 | crvs=s.getBoundary() |
1616 | self.failUnless(len(crvs) == 3, "too many boundary corves.") |
1617 | self.failUnless(l01 in crvs, "l01 is missing in boundary") |
1618 | self.failUnless(crvs[crvs.index(l01)].hasSameOrientation(l01),"l01 has incorrect orientation.") |
1619 | self.failUnless(l12_1 in crvs, "l21 is missing in boundary") |
1620 | self.failUnless(crvs[crvs.index(l12_1)].hasSameOrientation(l12_1),"l12_1 has incorrect orientation.") |
1621 | self.failUnless(l20 in crvs, "l20 is missing in boundary") |
1622 | self.failUnless(crvs[crvs.index(l20)].hasSameOrientation(l20),"l12_1 has incorrect orientation.") |
1623 | |
1624 | |
1625 | code=s.getGmshCommand() |
1626 | self.failUnless(code == "Ruled Surface(17) = {14};", "gmsh command wrong.") |
1627 | |
1628 | self.failUnless(not s.isColocated(p4),"RuledSurface is colocated with point.") |
1629 | self.failUnless(s.isColocated(s),"RuledSurface is not colocated with its self.") |
1630 | self.failUnless(s.isColocated(RuledSurface(cl1)),"RuledSurface is not colocated with its copy.") |
1631 | self.failUnless(not s.isColocated(RuledSurface(cl2)),"RuledSurface is colocated with different length") |
1632 | self.failUnless(not s.isColocated(RuledSurface(cl3)),"RuledSurface is colocated with same length.") |
1633 | |
1634 | s.setLocalScale(3.) |
1635 | self.failUnless(p0.getLocalScale()==3., "p0 has wrong local scale.") |
1636 | self.failUnless(p1.getLocalScale()==3., "p1 has wrong local scale.") |
1637 | self.failUnless(p2.getLocalScale()==3., "p2 has wrong local scale.") |
1638 | self.failUnless(p4.getLocalScale()==3., "p4 has wrong local scale.") |
1639 | |
1640 | p=s.getPrimitives() |
1641 | self.failUnless(len(p) == 10, "too many primitives.") |
1642 | self.failUnless(cl1 in p, "cl1 is missing") |
1643 | self.failUnless(l01 in p, "l01 is missing") |
1644 | self.failUnless(l12_1 in p, "l21 is missing") |
1645 | self.failUnless(l20 in p, "l20 is missing") |
1646 | self.failUnless(p0 in p, "p0 is missing") |
1647 | self.failUnless(p1 in p, "p1 is missing") |
1648 | self.failUnless(p2 in p, "p2 is missing") |
1649 | self.failUnless(p3 in p, "p3 is missing") |
1650 | self.failUnless(p4 in p, "p4 is missing") |
1651 | |
1652 | sp=s.copy() |
1653 | self.failUnless(isinstance(sp,RuledSurface), "copy returns is not a RuledSurface.") |
1654 | self.failUnless(not sp == s, "copy equals source") |
1655 | self.failUnless(sp.isColocated(s),"copy is not colocated with its source.") |
1656 | cbl=sp.getBoundaryLoop() |
1657 | self.failUnless(not cbl == cl1,"copy uses cl1.") |
1658 | cp=sp.getPrimitives() |
1659 | self.failUnless(len(cp) == 10, "copy as too many primitives.") |
1660 | self.failUnless(not cl1 in cp, "copy is using cl1") |
1661 | self.failUnless(not l01 in cp, "copy is using l01") |
1662 | self.failUnless(not l12_1 in cp, "copy is using l21") |
1663 | self.failUnless(not l20 in cp, "copy is using l20") |
1664 | self.failUnless(not p0 in cp, "copy is using p0") |
1665 | self.failUnless(not p1 in cp, "copy is using p1") |
1666 | self.failUnless(not p2 in cp, "copy is using p2") |
1667 | self.failUnless(not p3 in cp, "copy is using p3") |
1668 | self.failUnless(not p4 in cp, "copy is using p4") |
1669 | del cp |
1670 | |
1671 | p0_m=Point(0,0,0) |
1672 | p1_m=Point(-1,-1,-1) |
1673 | p2_m=Point(-2,-2,-2) |
1674 | p3_m=Point(-3,-3,-3) |
1675 | p4_m=Point(-1,-2,-3) |
1676 | |
1677 | l01_m=Line(p0_m,p1_m) |
1678 | l12_m=Arc(p3_m,p1_m,p2_m) |
1679 | l20_m=Spline(p2_m,p4_m,p0_m) |
1680 | |
1681 | ds=s.apply(Dilation(-1.)) |
1682 | self.failUnless(ds.isColocated(RuledSurface(CurveLoop(l01_m,l12_m,l20_m))),"dilation is wrong.") |
1683 | cbl=ds.getBoundaryLoop() |
1684 | self.failUnless(not cbl == cl1,"dilation uses cl1.") |
1685 | cp=ds.getPrimitives() |
1686 | self.failUnless(len(cp) == 10, "dilation as too many primitives.") |
1687 | self.failUnless(not cl1 in cp, "dilation is using cl1") |
1688 | self.failUnless(not l01 in cp, "dilation is using l01") |
1689 | self.failUnless(not l12_1 in cp, "dilation is using l21") |
1690 | self.failUnless(not l20 in cp, "dilation is using l20") |
1691 | self.failUnless(not p0 in cp, "dilation is using p0") |
1692 | self.failUnless(not p1 in cp, "dilation is using p1") |
1693 | self.failUnless(not p2 in cp, "dilation is using p2") |
1694 | self.failUnless(not p3 in cp, "dilation is using p3") |
1695 | self.failUnless(not p4 in cp, "dilation is using p4") |
1696 | |
1697 | s.modifyBy(Dilation(-1.)) |
1698 | self.failUnless(s.isColocated(RuledSurface(CurveLoop(l01_m,l12_m,l20_m))),"inplace dilation is wrong.") |
1699 | |
1700 | p=s.getPrimitives() |
1701 | self.failUnless(len(p) == 10, "inplace dilation has too many primitives.") |
1702 | self.failUnless(cl1 in p, "inplace dilation cl1 is missing") |
1703 | self.failUnless(l01 in p, "inplace dilation l01 is missing") |
1704 | self.failUnless(l12_1 in p, "inplace dilation l21 is missing") |
1705 | self.failUnless(l20 in p, "inplace dilation l20 is missing") |
1706 | self.failUnless(p0 in p, "inplace dilation p0 is missing") |
1707 | self.failUnless(p1 in p, "inplace dilation p1 is missing") |
1708 | self.failUnless(p2 in p, "inplace dilation p2 is missing") |
1709 | self.failUnless(p3 in p, "inplace dilation p3 is missing") |
1710 | self.failUnless(p4 in p, "inplace dilation p4 is missing") |
1711 | |
1712 | p=s.getBoundary() |
1713 | self.failUnless(len(p) == 3, "inplace dilation has too many boundary curves.") |
1714 | self.failUnless(l01 in p, "inplace dilation l01 is missing in boundary curves.") |
1715 | self.failUnless(p[p.index(l01)].hasSameOrientation(l01),"l01 in getBoundary after dilation has incorrect orientation.") |
1716 | self.failUnless(l12_1 in p, "inplace dilation l21 is missing") |
1717 | self.failUnless(p[p.index(l12_1)].hasSameOrientation(l12_1),"l12_1 in getBoundary after dilation has incorrect orientation.") |
1718 | self.failUnless(l20 in p, "inplace dilation l20 is missing") |
1719 | self.failUnless(p[p.index(l20)].hasSameOrientation(l20),"l20 in getBoundary after dilation has incorrect orientation.") |
1720 | |
1721 | p=s.getBoundaryLoop() |
1722 | self.failUnless(cl1 == p, "inplace dilation s.getBoundaryLoop does not return cl1") |
1723 | self.failUnless(p.hasSameOrientation(cl1),"cl1 in getBoundaryLoop after dilation has incorrect orientation.") |
1724 | |
1725 | def test_ReverseRuledSurface(self): |
1726 | p0=Point(0,0,0,0.1) |
1727 | p1=Point(1,1,1,0.2) |
1728 | p2=Point(2,2,2,0.3) |
1729 | p3=Point(3,3,3,0.4) |
1730 | p4=Point( |