/[escript]/trunk/pycad/test/python/run_pycad_test.py
ViewVC logotype

Contents of /trunk/pycad/test/python/run_pycad_test.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 933 - (show annotations)
Mon Jan 22 07:20:25 2007 UTC (16 years, 2 months ago) by gross
File MIME type: text/x-python
File size: 182186 byte(s)
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(