1 // Copyright (C) 2007-2012 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "QuadraticPlanarInterpTest.hxx"
21 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
22 #include "InterpKernelGeo2DElementaryEdge.hxx"
23 #include "InterpKernelGeo2DEdgeArcCircle.hxx"
24 #include "InterpKernelGeo2DEdgeLin.hxx"
31 using namespace INTERP_KERNEL;
39 DoubleEqual(double eps):_eps(eps) { }
40 bool operator()(double x, double y) { return fabs(x-y)<_eps; }
45 void QuadraticPlanarInterpTest::checkNonRegressionOmar0000()
47 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
48 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
50 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
51 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
54 -0.383022221559489, -0.1786061951567303, -0.5745333323392334, -0.01790929273509539, 0.5745333323392335, -0.01790929273509556, 0.383022221559489, -0.1786061951567304,
55 -0.4787777769493612, -0.0982577439459128, 4.592273826833915e-17, 0.25, 0.4787777769493612, -0.09825774394591297, 3.061515884555943e-17, 0 };
58 0, 1, 2, 3, 4, 5, 6, 7 };
59 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
60 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
61 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
64 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
65 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
66 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
71 void QuadraticPlanarInterpTest::checkNonRegressionOmar0001()
73 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
74 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
76 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
77 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
80 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
81 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
84 0, 1, 2, 3, 4, 5, 6, 7 };
85 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
86 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
87 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.272708,pol1->intersectWith(*pol2),1.e-6);
90 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
91 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
92 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.272708,pol2->intersectWith(*pol1),1.e-6);
97 void QuadraticPlanarInterpTest::checkNonRegressionOmar0002()
99 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
100 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
102 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
103 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
106 -0.4979288880273356, 0.4178119462962507, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.4979288880273357, 0.4178119462962505,
107 -0.555382221261259, 0.4660210170227412, 4.898425415289509e-17, 0.8, 0.5553822212612591, 0.466021017022741, 3.979970649922726e-17, 0.65 };
110 0, 1, 2, 3, 4, 5, 6, 7 };
111 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
112 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
113 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.122173,pol1->intersectWith(*pol2),1.e-6);
116 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
117 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
118 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.122173,pol2->intersectWith(*pol1),1.e-6);
123 void QuadraticPlanarInterpTest::checkNonRegressionOmar0003()
125 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
126 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
128 -0.3535533905932737, 0.3535533905932738, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.3535533905932738, 0.3535533905932737,
129 -0.4419417382415922, 0.4419417382415922, 4.592273826833915e-17, 0.75, 0.4419417382415922, 0.4419417382415922, 3.061515884555943e-17, 0.5 };
132 -0.4979288880273356, 0.4178119462962507, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.4979288880273357, 0.4178119462962505,
133 -0.555382221261259, 0.4660210170227412, 4.898425415289509e-17, 0.8, 0.5553822212612591, 0.466021017022741, 3.979970649922726e-17, 0.65 };
136 0, 1, 2, 3, 4, 5, 6, 7 };
137 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
138 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
139 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol1->intersectWith(*pol2),1.e-6);
142 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
143 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
144 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol2->intersectWith(*pol1),1.e-6);
149 void QuadraticPlanarInterpTest::checkNonRegressionOmar0004()
151 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
152 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
154 -0.4596194077712559, 0.4596194077712559, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.4596194077712559, 0.4596194077712559,
155 -0.4949747468305832, 0.4949747468305833, 4.592273826833915e-17, 0.75, 0.4949747468305833, 0.4949747468305832, 3.979970649922726e-17, 0.65 };
158 -0.383022221559489, 0.3213938048432697, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.383022221559489, 0.3213938048432696,
159 -0.4979288880273356, 0.4178119462962507, 4.898425415289509e-17, 0.8, 0.4979288880273357, 0.4178119462962505, 3.061515884555943e-17, 0.5 };
162 0, 1, 2, 3, 4, 5, 6, 7 };
163 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
164 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
165 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol1->intersectWith(*pol2),1.e-6);
168 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
169 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
170 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol2->intersectWith(*pol1),1.e-6);
175 void QuadraticPlanarInterpTest::checkNonRegressionOmar0005()
177 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
178 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
180 -0.383022221559489, 0.3213938048432697, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.383022221559489, 0.3213938048432696,
181 -0.4979288880273356, 0.4178119462962507, 4.898425415289509e-17, 0.8, 0.4979288880273357, 0.4178119462962505, 3.061515884555943e-17, 0.5 };
184 -0.4596194077712559, 0.4596194077712559, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.4596194077712559, 0.4596194077712559,
185 -0.4949747468305832, 0.4949747468305833, 4.592273826833915e-17, 0.75, 0.4949747468305833, 0.4949747468305832, 3.979970649922726e-17, 0.65 };
188 0, 1, 2, 3, 4, 5, 6, 7 };
189 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
190 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
191 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol1->intersectWith(*pol2),1.e-6);
194 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
195 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
196 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol2->intersectWith(*pol1),1.e-6);
201 void QuadraticPlanarInterpTest::checkNonRegressionOmar0006()
203 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
204 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
206 -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
207 -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
210 -0.1811733315717646, 0.6761480784023478, -0.2070552360820167, 0.7727406610312547, 0.2070552360820166, 0.7727406610312547, 0.1811733315717645, 0.6761480784023478,
211 -0.1941142838268906, 0.7244443697168013, 4.898425415289509e-17, 0.8, 0.1941142838268906, 0.7244443697168013, 4.28612223837832e-17, 0.7 };
214 0, 1, 2, 3, 4, 5, 6, 7 };
215 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
216 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
217 std::vector<double> val1,val2;
218 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
219 double test1_res[4]={0.,0.366519,0.,0.};
220 double test2_res[4]={0.,0.,0.,0.366519};
221 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
222 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
227 void QuadraticPlanarInterpTest::checkNonRegressionOmar0007()
229 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
230 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
232 -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
233 -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
236 -0.4499513267805775, 0.5362311101832846, -0.5142300877492315, 0.6128355544951825, -0.1389185421335442, 0.7878462024097664, -0.1215537243668512, 0.6893654271085455,
237 -0.4820907072649045, 0.5745333323392335, -0.3380946093925595, 0.7250462296293201, -0.1302361332501977, 0.738605814759156, -0.2958327832184895, 0.634415450925655 };
240 0, 1, 2, 3, 4, 5, 6, 7 };
241 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
242 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
243 std::vector<double> val1,val2;
244 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
245 double test1_res[4]={0.,0.366519,0.,0.};
246 double test2_res[4]={0.,0.,0.,0.366519};
247 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
248 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
253 void QuadraticPlanarInterpTest::checkNonRegressionOmar0008()
255 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
256 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
258 -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
259 -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
262 -0.6344154509256549, 0.2958327832184896, -0.72504622962932, 0.3380946093925596, -0.4588611490808367, 0.6553216354311937, -0.401503505445732, 0.5734064310022944,
263 -0.6797308402774874, 0.3169636963055246, -0.6128355544951823, 0.5142300877492316, -0.4301823272632844, 0.614364033216744, -0.5362311101832845, 0.4499513267805776 };
266 0, 1, 2, 3, 4, 5, 6, 7 };
267 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
268 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
269 std::vector<double> val1,val2;
270 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
271 double test1_res[4]={0.,0.18326,0.,0.};
272 double test2_res[4]={0.,0.,0.,0.18326};
273 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-5)));
274 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-5)));
279 void QuadraticPlanarInterpTest::checkNonRegressionOmar0009()
281 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
282 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
284 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
285 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
287 0.5, -1.224606353822377e-16, 0.6, -1.469527624586853e-16, -0.6, 7.347638122934263e-17, -0.5, 6.123031769111886e-17,
288 0.55, -1.347066989204615e-16, -1.102145718440139e-16, -0.6, -0.55, 6.735334946023075e-17, -9.184547653667829e-17, -0.5 };
291 0, 1, 2, 3, 4, 5, 6, 7 };
292 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
293 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
294 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
297 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
298 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
299 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
304 void QuadraticPlanarInterpTest::checkNonRegressionOmar0010()
306 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
307 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
309 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
310 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
312 0.4346666218300808, -0.1164685702961343, 0.579555495773441, -0.1552914270615124, -0.579555495773441, -0.1552914270615122, -0.4346666218300808, -0.1164685702961342,
313 0.5071110588017609, -0.1358799986788234, -1.102145718440139e-16, -0.6, -0.507111058801761, -0.1358799986788232, -8.266092888301047e-17, -0.45 };
316 0, 1, 2, 3, 4, 5, 6, 7 };
317 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
318 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
319 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
322 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
323 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
324 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
329 void QuadraticPlanarInterpTest::checkNonRegressionOmar0011()
331 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
332 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
334 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
335 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
337 0.4829629131445342, -0.1294095225512603, 0.579555495773441, -0.1552914270615124, -0.579555495773441, -0.1552914270615122, -0.4829629131445342, -0.1294095225512602,
338 0.5312592044589877, -0.1423504748063864, -1.102145718440139e-16, -0.6, -0.5312592044589877, -0.1423504748063862, -9.184547653667829e-17, -0.5 };
341 0, 1, 2, 3, 4, 5, 6, 7 };
342 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
343 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
344 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
345 double val1,val2,val3;
346 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
347 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
348 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
349 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
350 std::vector<double> val4,val5;
351 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
352 double test1_res[4]={0.,0.,0.,0.};
353 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
354 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
357 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
358 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
359 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
360 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
361 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
362 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
363 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
364 val4.clear(); val5.clear();
365 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
366 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
367 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
372 void QuadraticPlanarInterpTest::checkNonRegressionOmar2511()
374 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
375 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
377 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
378 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4, };
381 0.579555495773441, -0.1552914270615124, -0.579555495773441, -0.1552914270615122, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512603,
382 -1.102145718440139e-16, -0.6, -0.5312592044589877, -0.1423504748063862, -9.184547653667829e-17, -0.5, 0.5312592044589877, -0.1423504748063864, };
385 0, 1, 2, 3, 4, 5, 6, 7 };
386 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
387 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
388 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
389 double val1,val2,val3;
390 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
391 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
392 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
393 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
394 std::vector<double> val4,val5;
395 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
396 double test1_res[4]={0.,0.,0.,0.};
397 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
398 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
401 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
402 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
403 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
404 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
405 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
406 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
407 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
408 val4.clear(); val5.clear();
409 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
410 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
411 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
416 void QuadraticPlanarInterpTest::checkNonRegressionOmar0012()
418 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
419 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
421 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
422 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
425 6.123031769111886e-18, 1.85, 1.224606353822377e-17, 1.95, 1.224606353822377e-17, 1.55, 6.123031769111886e-18, 1.65,
426 9.18454765366783e-18, 1.9, 0.2, 1.75, 9.18454765366783e-18, 1.6, 0.1, 1.75 };
429 0, 1, 2, 3, 4, 5, 6, 7 };
430 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
431 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
432 std::vector<double> val1,val2;
433 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
434 double test1_res[4]={0.,0.,0.05,0.};
435 double test2_res[4]={0.,0.,0.05,0.};
436 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
437 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
440 std::vector<int> val3;
441 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
442 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
443 pol1->intersectForPoint(*pol2,val3);
444 int test3_res[4]={0,0,1,0};
445 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
450 void QuadraticPlanarInterpTest::checkNonRegressionOmar0013()
452 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
453 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
455 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
456 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
459 6.123031769111886e-18, 1.7, 1.224606353822377e-17, 1.8, 1.224606353822377e-17, 1.4, 6.123031769111886e-18, 1.5,
460 9.18454765366783e-18, 1.75, 0.2, 1.6, 9.18454765366783e-18, 1.45, 0.1, 1.6 };
463 0, 1, 2, 3, 4, 5, 6, 7 };
464 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
465 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
466 std::vector<double> val1,val2;
467 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
468 double test1_res[4]={0.,0.,0.1,0.};
469 double test2_res[4]={0.,0.,0.1,0.};
470 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
471 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
474 std::vector<int> val3;
475 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
476 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
477 pol1->intersectForPoint(*pol2,val3);
478 int test3_res[4]={0,0,2,0};
479 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
484 void QuadraticPlanarInterpTest::checkNonRegressionOmar0014()
486 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
487 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
489 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
490 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
492 6.123031769111886e-18, 1.55, 1.224606353822377e-17, 1.65, 1.224606353822377e-17, 1.25, 6.123031769111886e-18, 1.35,
493 9.18454765366783e-18, 1.6, 0.2, 1.45, 9.18454765366783e-18, 1.3, 0.1, 1.45 };
496 0, 1, 2, 3, 4, 5, 6, 7 };
497 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
498 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
499 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
502 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
503 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
504 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
508 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
509 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
510 std::vector<double> val1,val2;
511 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
512 double test1_res[4]={0.,0.,0.15,0.};
513 double test2_res[4]={0.05,0.,0.1,0.};
514 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
515 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
518 std::vector<int> val3;
519 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
520 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
521 pol1->intersectForPoint(*pol2,val3);
522 int test3_res[4]={0,0,3,0};
523 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
528 void QuadraticPlanarInterpTest::checkNonRegressionOmar0015()
530 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
531 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
533 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
534 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
536 6.123031769111886e-18, 1.4, 1.224606353822377e-17, 1.5, 1.224606353822377e-17, 1.1, 6.123031769111886e-18, 1.2,
537 9.18454765366783e-18, 1.45, 0.2, 1.3, 9.18454765366783e-18, 1.15, 0.1, 1.3 };
540 0, 1, 2, 3, 4, 5, 6, 7 };
541 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
542 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
543 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
546 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
547 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
548 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
552 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
553 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
554 std::vector<double> val1,val2;
555 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
556 double test1_res[4]={0.,0.,0.2,0.};
557 double test2_res[4]={0.1,0.,0.1,0.};
558 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
559 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
562 std::vector<int> val3;
563 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
564 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
565 pol1->intersectForPoint(*pol2,val3);
566 int test3_res[4]={0,0,4,0};
567 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
572 void QuadraticPlanarInterpTest::checkNonRegressionOmar0016()
574 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
575 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
577 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
578 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
580 6.123031769111886e-18, 1.25, 1.224606353822377e-17, 1.35, 1.224606353822377e-17, 0.95, 6.123031769111886e-18, 1.05,
581 9.18454765366783e-18, 1.3, 0.2, 1.15, 9.18454765366783e-18, 0.9999999999999999, 0.1, 1.15 };
584 0, 1, 2, 3, 4, 5, 6, 7 };
585 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
586 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
587 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
590 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
591 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
592 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
596 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
597 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
598 std::vector<double> val1,val2;
599 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
600 double test1_res[4]={0.,0.,0.15,0.};
601 double test2_res[4]={0.1,0.,0.05,0.};
602 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
603 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
606 std::vector<int> val3;
607 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
608 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
609 pol1->intersectForPoint(*pol2,val3);
610 int test3_res[4]={0,0,3,0};
611 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
616 void QuadraticPlanarInterpTest::checkNonRegressionOmar0017()
618 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
619 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
621 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
622 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
625 6.123031769111886e-18, 1.1, 1.224606353822377e-17, 1.2, 1.224606353822377e-17, 0.8, 6.123031769111886e-18, 0.9,
626 9.18454765366783e-18, 1.15, 0.2, 1, 9.18454765366783e-18, 0.85, 0.1, 1 };
629 0, 1, 2, 3, 4, 5, 6, 7 };
630 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
631 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
632 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
635 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
636 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
637 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
641 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
642 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
643 std::vector<double> val1,val2;
644 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
645 double test1_res[4]={0.,0.,0.1,0.};
646 double test2_res[4]={0.1,0.,0.,0.};
647 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
648 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
651 std::vector<int> val3;
652 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
653 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
654 pol1->intersectForPoint(*pol2,val3);
655 int test3_res[4]={0,0,2,0};
656 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
661 void QuadraticPlanarInterpTest::checkNonRegressionOmar0018()
663 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
664 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
666 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
667 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
670 6.123031769111886e-18, 0.95, 1.224606353822377e-17, 1.05, 1.224606353822377e-17, 0.6499999999999999, 6.123031769111886e-18, 0.75,
671 9.18454765366783e-18, 1, 0.2, 0.85, 9.18454765366783e-18, 0.7, 0.1, 0.85 };
674 0, 1, 2, 3, 4, 5, 6, 7 };
675 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
676 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
677 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
680 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
681 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
682 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
686 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
687 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
688 std::vector<double> val1,val2;
689 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
690 double test1_res[4]={0.,0.,0.05,0.};
691 double test2_res[4]={0.05,0.,0.,0.};
692 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
693 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
696 std::vector<int> val3;
697 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
698 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
699 pol1->intersectForPoint(*pol2,val3);
700 int test3_res[4]={0,0,1,0};
701 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
706 void QuadraticPlanarInterpTest::checkNonRegressionOmar0019()
708 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
709 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
711 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
712 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
715 0.9500000000000001, 1.836909530733566e-17, 0.8, 3.673819061467131e-17, 1.4, 0, 1.25, 0,
716 0.8750000000000001, 2.755364296100349e-17, 1.1, 0.3, 1.325, 0, 1.1, 0.15 };
719 0, 1, 2, 3, 4, 5, 6, 7 };
720 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
721 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
722 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
725 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
726 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
727 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
732 void QuadraticPlanarInterpTest::checkNonRegressionOmar0020()
734 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
735 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
737 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
738 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
741 0.05000000000000002, 1.836909530733566e-17, -0.09999999999999998, 3.673819061467131e-17, 0.5, 0, 0.35, 0,
742 -0.02499999999999997, 2.755364296100349e-17, 0.2, 0.3, 0.425, 0, 0.2, 0.15 };
745 0, 1, 2, 3, 4, 5, 6, 7 };
746 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
747 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
748 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
751 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
752 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
753 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
757 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
758 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
759 std::vector<double> val1,val2;
760 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
761 double test1_res[4]={0.,0.,0.,0.};
762 double test2_res[4]={0.,0.,0.,0.};
763 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
764 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
767 std::vector<int> val3;
768 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
769 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
770 pol1->intersectForPoint(*pol2,val3);
771 int test3_res[4]={0,0,0,0};
772 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
777 void QuadraticPlanarInterpTest::checkNonRegressionOmar0021()
779 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
780 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
782 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
783 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
786 -1, -0.07999999999999999, -1.15, -0.07999999999999996, -0.55, -0.08, -0.7, -0.08,
787 -1.075, -0.07999999999999997, -0.85, 0.22, -0.625, -0.08, -0.85, 0.06999999999999999 };
790 0, 1, 2, 3, 4, 5, 6, 7 };
791 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
792 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
793 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0311485,pol1->intersectWith(*pol2),1.e-7);
796 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
797 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
798 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0311485,pol2->intersectWith(*pol1),1.e-7);
802 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
803 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
804 std::vector<double> val1,val2;
805 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
806 double test1_res[4]={0.162251,0.151523,0.,0.};
807 double test2_res[4]={0.,0.311383,0.,0.0978193};
808 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
809 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
812 std::vector<int> val3;
813 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
814 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
815 pol1->intersectForPoint(*pol2,val3);
816 int test3_res[4]={2,2,0,0};
817 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
821 void QuadraticPlanarInterpTest::checkNonRegressionOmar0022()
823 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
824 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
826 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
827 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
830 0.15, -0.07999999999999999, 0, -0.07999999999999996, 0.6, -0.08, 0.45, -0.08,
831 0.07500000000000001, -0.07999999999999997, 0.3, 0.22, 0.5249999999999999, -0.08, 0.3, 0.06999999999999999 };
834 0, 1, 2, 3, 4, 5, 6, 7 };
835 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
836 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
837 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00902229,pol1->intersectWith(*pol2),1.e-8);
840 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
841 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
842 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00902229,pol2->intersectWith(*pol1),1.e-8);
847 void QuadraticPlanarInterpTest::checkNonRegressionOmar0023()
849 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
850 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
852 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
853 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5, };
856 0.4156854249492381, 0.5656854249492381, 0.2656854249492381, 0.5656854249492381, 0.8656854249492381, 0.5656854249492381, 0.7156854249492381, 0.5656854249492381,
857 0.3406854249492381, 0.5656854249492381, 0.5656854249492381, 0.8656854249492381, 0.7906854249492381, 0.5656854249492381, 0.5656854249492381, 0.7156854249492381 };
860 0, 1, 2, 3, 4, 5, 6, 7 };
861 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
862 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
863 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0215659,pol1->intersectWith(*pol2),1.e-7);
866 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
867 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
868 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0215659,pol2->intersectWith(*pol1),1.e-7);
873 void QuadraticPlanarInterpTest::checkNonRegressionOmar0024()
875 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
876 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
878 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
879 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
881 0.5656854249492381, 0.5656854249492381, 0.4156854249492382, 0.5656854249492381, 1.015685424949238, 0.5656854249492381, 0.8656854249492382, 0.5656854249492381,
882 0.4906854249492382, 0.5656854249492381, 0.7156854249492381, 0.8656854249492381, 0.9406854249492381, 0.5656854249492381, 0.7156854249492381, 0.7156854249492381 };
885 0, 1, 2, 3, 4, 5, 6, 7 };
886 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
887 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
888 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol1->intersectWith(*pol2),1.e-8);
891 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
892 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
893 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol2->intersectWith(*pol1),1.e-8);
898 void QuadraticPlanarInterpTest::checkNonRegressionOmar2524()
900 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
901 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
903 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
904 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
906 0.4156854249492382, 0.5656854249492381, 1.015685424949238, 0.5656854249492381, 0.8656854249492382, 0.5656854249492381, 0.5656854249492381, 0.5656854249492381,
907 0.7156854249492381, 0.8656854249492381, 0.9406854249492381, 0.5656854249492381, 0.7156854249492381, 0.7156854249492381, 0.4906854249492382, 0.5656854249492381 };
910 0, 1, 2, 3, 4, 5, 6, 7 };
911 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
912 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
913 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol1->intersectWith(*pol2),1.e-8);
916 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
917 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
918 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol2->intersectWith(*pol1),1.e-8);
923 void QuadraticPlanarInterpTest::checkNonRegressionOmar0025()
925 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
926 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
928 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
929 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
932 0.715685424949238, 0.5656854249492381, 0.565685424949238, 0.5656854249492381, 1.165685424949238, 0.5656854249492381, 1.015685424949238, 0.5656854249492381,
933 0.6406854249492381, 0.5656854249492381, 0.8656854249492381, 0.8656854249492381, 1.090685424949238, 0.5656854249492381, 0.8656854249492381, 0.7156854249492381 };
936 0, 1, 2, 3, 4, 5, 6, 7 };
937 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
938 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
939 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
942 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
943 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
944 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
948 std::vector<int> val3;
949 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
950 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
951 pol1->intersectForPoint(*pol2,val3);
952 int test3_res[4]={0,1,0,0};
953 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
958 void QuadraticPlanarInterpTest::checkNonRegressionOmar0026()
960 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
961 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
963 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
964 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
967 0.1, 0.95, 0.2, 0.95, -0.2, 0.95, -0.1, 0.95,
968 0.15, 0.95, 1.224606353822377e-17, 0.75, -0.15, 0.95, 6.123031769111886e-18, 0.85 };
971 0, 1, 2, 3, 4, 5, 6, 7 };
972 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
973 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
974 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
977 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
978 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
979 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
983 std::vector<int> val3;
984 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
985 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
986 pol1->intersectForPoint(*pol2,val3);
987 int test3_res[4]={0,1,0,0};
988 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
993 void QuadraticPlanarInterpTest::checkNonRegressionOmar0027()
995 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
996 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
998 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
999 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
1001 double coords2[16]={
1002 -0.1, 0.7, -0.2, 0.7, 0.2, 0.7, 0.1, 0.7,
1003 -0.15, 0.7, 1.224606353822377e-17, 0.8999999999999999, 0.15, 0.7, 6.123031769111886e-18, 0.7999999999999999 };
1006 0, 1, 2, 3, 4, 5, 6, 7 };
1007 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1008 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1009 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00712309,pol1->intersectWith(*pol2),1.e-8);
1012 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1013 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1014 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00712309,pol2->intersectWith(*pol1),1.e-8);
1018 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1019 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1020 std::vector<double> val1,val2;
1021 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1022 double test1_res[4]={0.,0.222704,0.,0.};
1023 double test2_res[4]={0.1,0.0465335,0.1,0.092554};
1024 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
1025 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
1028 std::vector<int> val3;
1029 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1030 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1031 pol1->intersectForPoint(*pol2,val3);
1032 int test3_res[4]={0,4,0,0};
1033 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
1038 void QuadraticPlanarInterpTest::checkNonRegressionOmar0028()
1040 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
1041 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
1043 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
1044 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
1046 double coords2[16]={
1047 -0.07071067811865477, 0.4792893218813453, -0.1414213562373095, 0.4085786437626905, 0.1414213562373095, 0.6914213562373095, 0.07071067811865477, 0.6207106781186548,
1048 -0.1060660171779822, 0.4439339828220179, -0.1414213562373095, 0.6914213562373096, 0.1060660171779822, 0.6560660171779822, -0.07071067811865475, 0.6207106781186548 };
1051 0, 1, 2, 3, 4, 5, 6, 7 };
1052 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1053 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1054 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol1->intersectWith(*pol2),1.e-7);
1057 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1058 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1059 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol2->intersectWith(*pol1),1.e-7);
1063 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1064 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1065 std::vector<double> val1,val2;
1066 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1067 double test1_res[4]={0.,0.,0.,0.};
1068 double test2_res[4]={0.1,0.628319,0.1,0.314159};
1069 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
1070 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
1073 std::vector<int> val3;
1074 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1075 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1076 pol1->intersectForPoint(*pol2,val3);
1077 int test3_res[4]={0,1,0,0};
1078 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
1083 void QuadraticPlanarInterpTest::checkNonRegressionOmar0029()
1085 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
1086 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
1088 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
1089 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
1091 double coords2[16]={
1092 -0.07071067811865477, 0.1292893218813453, -0.1414213562373095, 0.05857864376269051, 0.1414213562373095, 0.3414213562373095, 0.07071067811865477, 0.2707106781186548,
1093 -0.1060660171779822, 0.09393398282201787, -0.1414213562373095, 0.3414213562373095, 0.1060660171779822, 0.3060660171779822, -0.07071067811865475, 0.2707106781186548 };
1096 0, 1, 2, 3, 4, 5, 6, 7 };
1097 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1098 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1099 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
1102 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1103 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1104 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
1108 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1109 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1110 std::vector<double> val1,val2;
1111 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1112 double test1_res[4]={0.,0.,0.,0.};
1113 double test2_res[4]={0.,0.,0.,0.};
1114 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
1115 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
1118 std::vector<int> val3;
1119 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1120 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1121 pol1->intersectForPoint(*pol2,val3);
1122 int test3_res[4]={0,0,0,1};
1123 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
1128 void QuadraticPlanarInterpTest::checkNonRegressionOmar0030()
1130 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
1131 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
1133 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
1134 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
1136 double coords2[16]={
1137 -0.4889087296526012, 0.3889087296526012, -0.5889087296526012, 0.3889087296526012, -0.1889087296526012, 0.3889087296526012, -0.2889087296526012, 0.3889087296526012,
1138 -0.5389087296526012, 0.3889087296526012, -0.3889087296526012, 0.5889087296526012, -0.2389087296526012, 0.3889087296526012, -0.3889087296526012, 0.4889087296526012 };
1141 0, 1, 2, 3, 4, 5, 6, 7 };
1142 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1143 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1144 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol1->intersectWith(*pol2),1.e-7);
1147 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1148 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1149 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol2->intersectWith(*pol1),1.e-7);
1153 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1154 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1155 std::vector<double> val1,val2;
1156 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1157 double test1_res[4]={0.,0.,0.,0.};
1158 double test2_res[4]={0.1,0.628319,0.1,0.314159};
1159 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
1160 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
1163 std::vector<int> val3;
1164 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1165 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1166 pol1->intersectForPoint(*pol2,val3);
1167 int test3_res[4]={0,1,0,0};
1168 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));