1 // Copyright (C) 2007-2008 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
19 #include "QuadraticPlanarInterpTest.hxx"
20 #include "QuadraticPolygon.hxx"
21 #include "ElementaryEdge.hxx"
22 #include "EdgeArcCircle.hxx"
23 #include "EdgeLin.hxx"
31 using namespace INTERP_KERNEL;
36 DoubleEqual(double eps):_eps(eps) { }
37 bool operator()(double x, double y) { return fabs(x-y)<_eps; }
42 void QuadraticPlanarInterpTest::checkNonRegressionOmar0000()
44 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
45 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
47 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
48 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
51 -0.383022221559489, -0.1786061951567303, -0.5745333323392334, -0.01790929273509539, 0.5745333323392335, -0.01790929273509556, 0.383022221559489, -0.1786061951567304,
52 -0.4787777769493612, -0.0982577439459128, 4.592273826833915e-17, 0.25, 0.4787777769493612, -0.09825774394591297, 3.061515884555943e-17, 0 };
55 0, 1, 2, 3, 4, 5, 6, 7 };
56 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
57 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
58 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
61 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
62 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
63 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
68 void QuadraticPlanarInterpTest::checkNonRegressionOmar0001()
70 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
71 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
73 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
74 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
77 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
78 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
81 0, 1, 2, 3, 4, 5, 6, 7 };
82 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
83 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
84 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.272708,pol1->intersectWith(*pol2),1.e-6);
87 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
88 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
89 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.272708,pol2->intersectWith(*pol1),1.e-6);
94 void QuadraticPlanarInterpTest::checkNonRegressionOmar0002()
96 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
97 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
99 -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
100 -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
103 -0.4979288880273356, 0.4178119462962507, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.4979288880273357, 0.4178119462962505,
104 -0.555382221261259, 0.4660210170227412, 4.898425415289509e-17, 0.8, 0.5553822212612591, 0.466021017022741, 3.979970649922726e-17, 0.65 };
107 0, 1, 2, 3, 4, 5, 6, 7 };
108 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
109 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
110 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.122173,pol1->intersectWith(*pol2),1.e-6);
113 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
114 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
115 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.122173,pol2->intersectWith(*pol1),1.e-6);
120 void QuadraticPlanarInterpTest::checkNonRegressionOmar0003()
122 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
123 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
125 -0.3535533905932737, 0.3535533905932738, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.3535533905932738, 0.3535533905932737,
126 -0.4419417382415922, 0.4419417382415922, 4.592273826833915e-17, 0.75, 0.4419417382415922, 0.4419417382415922, 3.061515884555943e-17, 0.5 };
129 -0.4979288880273356, 0.4178119462962507, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.4979288880273357, 0.4178119462962505,
130 -0.555382221261259, 0.4660210170227412, 4.898425415289509e-17, 0.8, 0.5553822212612591, 0.466021017022741, 3.979970649922726e-17, 0.65 };
133 0, 1, 2, 3, 4, 5, 6, 7 };
134 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
135 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
136 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol1->intersectWith(*pol2),1.e-6);
139 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
140 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
141 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol2->intersectWith(*pol1),1.e-6);
146 void QuadraticPlanarInterpTest::checkNonRegressionOmar0004()
148 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
149 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
151 -0.4596194077712559, 0.4596194077712559, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.4596194077712559, 0.4596194077712559,
152 -0.4949747468305832, 0.4949747468305833, 4.592273826833915e-17, 0.75, 0.4949747468305833, 0.4949747468305832, 3.979970649922726e-17, 0.65 };
155 -0.383022221559489, 0.3213938048432697, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.383022221559489, 0.3213938048432696,
156 -0.4979288880273356, 0.4178119462962507, 4.898425415289509e-17, 0.8, 0.4979288880273357, 0.4178119462962505, 3.061515884555943e-17, 0.5 };
159 0, 1, 2, 3, 4, 5, 6, 7 };
160 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
161 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
162 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol1->intersectWith(*pol2),1.e-6);
165 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
166 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
167 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol2->intersectWith(*pol1),1.e-6);
172 void QuadraticPlanarInterpTest::checkNonRegressionOmar0005()
174 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
175 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
177 -0.383022221559489, 0.3213938048432697, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.383022221559489, 0.3213938048432696,
178 -0.4979288880273356, 0.4178119462962507, 4.898425415289509e-17, 0.8, 0.4979288880273357, 0.4178119462962505, 3.061515884555943e-17, 0.5 };
181 -0.4596194077712559, 0.4596194077712559, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.4596194077712559, 0.4596194077712559,
182 -0.4949747468305832, 0.4949747468305833, 4.592273826833915e-17, 0.75, 0.4949747468305833, 0.4949747468305832, 3.979970649922726e-17, 0.65 };
185 0, 1, 2, 3, 4, 5, 6, 7 };
186 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
187 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
188 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol1->intersectWith(*pol2),1.e-6);
191 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
192 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
193 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.109956,pol2->intersectWith(*pol1),1.e-6);
198 void QuadraticPlanarInterpTest::checkNonRegressionOmar0006()
200 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
201 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
203 -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
204 -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
207 -0.1811733315717646, 0.6761480784023478, -0.2070552360820167, 0.7727406610312547, 0.2070552360820166, 0.7727406610312547, 0.1811733315717645, 0.6761480784023478,
208 -0.1941142838268906, 0.7244443697168013, 4.898425415289509e-17, 0.8, 0.1941142838268906, 0.7244443697168013, 4.28612223837832e-17, 0.7 };
211 0, 1, 2, 3, 4, 5, 6, 7 };
212 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
213 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
214 vector<double> val1,val2;
215 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
216 double test1_res[4]={0.,0.366519,0.,0.};
217 double test2_res[4]={0.,0.,0.,0.366519};
218 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
219 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
224 void QuadraticPlanarInterpTest::checkNonRegressionOmar0007()
226 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
227 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
229 -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
230 -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
233 -0.4499513267805775, 0.5362311101832846, -0.5142300877492315, 0.6128355544951825, -0.1389185421335442, 0.7878462024097664, -0.1215537243668512, 0.6893654271085455,
234 -0.4820907072649045, 0.5745333323392335, -0.3380946093925595, 0.7250462296293201, -0.1302361332501977, 0.738605814759156, -0.2958327832184895, 0.634415450925655 };
237 0, 1, 2, 3, 4, 5, 6, 7 };
238 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
239 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
240 vector<double> val1,val2;
241 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
242 double test1_res[4]={0.,0.366519,0.,0.};
243 double test2_res[4]={0.,0.,0.,0.366519};
244 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
245 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
250 void QuadraticPlanarInterpTest::checkNonRegressionOmar0008()
252 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
253 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
255 -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
256 -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
259 -0.6344154509256549, 0.2958327832184896, -0.72504622962932, 0.3380946093925596, -0.4588611490808367, 0.6553216354311937, -0.401503505445732, 0.5734064310022944,
260 -0.6797308402774874, 0.3169636963055246, -0.6128355544951823, 0.5142300877492316, -0.4301823272632844, 0.614364033216744, -0.5362311101832845, 0.4499513267805776 };
263 0, 1, 2, 3, 4, 5, 6, 7 };
264 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
265 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
266 vector<double> val1,val2;
267 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
268 double test1_res[4]={0.,0.18326,0.,0.};
269 double test2_res[4]={0.,0.,0.,0.18326};
270 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-5)));
271 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-5)));
276 void QuadraticPlanarInterpTest::checkNonRegressionOmar0009()
278 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
279 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
281 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
282 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
284 0.5, -1.224606353822377e-16, 0.6, -1.469527624586853e-16, -0.6, 7.347638122934263e-17, -0.5, 6.123031769111886e-17,
285 0.55, -1.347066989204615e-16, -1.102145718440139e-16, -0.6, -0.55, 6.735334946023075e-17, -9.184547653667829e-17, -0.5 };
288 0, 1, 2, 3, 4, 5, 6, 7 };
289 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
290 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
291 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
294 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
295 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
296 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
301 void QuadraticPlanarInterpTest::checkNonRegressionOmar0010()
303 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
304 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
306 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
307 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
309 0.4346666218300808, -0.1164685702961343, 0.579555495773441, -0.1552914270615124, -0.579555495773441, -0.1552914270615122, -0.4346666218300808, -0.1164685702961342,
310 0.5071110588017609, -0.1358799986788234, -1.102145718440139e-16, -0.6, -0.507111058801761, -0.1358799986788232, -8.266092888301047e-17, -0.45 };
313 0, 1, 2, 3, 4, 5, 6, 7 };
314 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
315 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
316 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
319 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
320 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
321 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
326 void QuadraticPlanarInterpTest::checkNonRegressionOmar0011()
328 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
329 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
331 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
332 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
334 0.4829629131445342, -0.1294095225512603, 0.579555495773441, -0.1552914270615124, -0.579555495773441, -0.1552914270615122, -0.4829629131445342, -0.1294095225512602,
335 0.5312592044589877, -0.1423504748063864, -1.102145718440139e-16, -0.6, -0.5312592044589877, -0.1423504748063862, -9.184547653667829e-17, -0.5 };
338 0, 1, 2, 3, 4, 5, 6, 7 };
339 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
340 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
341 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
342 double val1,val2,val3;
343 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
344 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
345 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
346 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
347 vector<double> val4,val5;
348 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
349 double test1_res[4]={0.,0.,0.,0.};
350 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
351 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
354 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
355 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
356 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
357 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
358 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
359 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
360 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
361 val4.clear(); val5.clear();
362 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
363 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
364 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
369 void QuadraticPlanarInterpTest::checkNonRegressionOmar2511()
371 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
372 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
374 -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
375 -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4, };
378 0.579555495773441, -0.1552914270615124, -0.579555495773441, -0.1552914270615122, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512603,
379 -1.102145718440139e-16, -0.6, -0.5312592044589877, -0.1423504748063862, -9.184547653667829e-17, -0.5, 0.5312592044589877, -0.1423504748063864, };
382 0, 1, 2, 3, 4, 5, 6, 7 };
383 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
384 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
385 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
386 double val1,val2,val3;
387 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
388 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
389 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
390 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
391 vector<double> val4,val5;
392 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
393 double test1_res[4]={0.,0.,0.,0.};
394 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
395 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
398 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
399 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
400 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
401 pol1->intersectForPerimeter(*pol2,val1,val2,val3);
402 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val1,1.e-13);
403 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val2,1.e-13);
404 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,val3,1.e-13);
405 val4.clear(); val5.clear();
406 pol1->intersectForPerimeterAdvanced(*pol2,val4,val5);
407 CPPUNIT_ASSERT(std::equal(val4.begin(),val4.end(),test1_res,DoubleEqual(1e-13)));
408 CPPUNIT_ASSERT(std::equal(val5.begin(),val5.end(),test1_res,DoubleEqual(1e-13)));
413 void QuadraticPlanarInterpTest::checkNonRegressionOmar0012()
415 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
416 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
418 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
419 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
422 6.123031769111886e-18, 1.85, 1.224606353822377e-17, 1.95, 1.224606353822377e-17, 1.55, 6.123031769111886e-18, 1.65,
423 9.18454765366783e-18, 1.9, 0.2, 1.75, 9.18454765366783e-18, 1.6, 0.1, 1.75 };
426 0, 1, 2, 3, 4, 5, 6, 7 };
427 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
428 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
429 vector<double> val1,val2;
430 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
431 double test1_res[4]={0.,0.,0.05,0.};
432 double test2_res[4]={0.,0.,0.05,0.};
433 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
434 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
438 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
439 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
440 pol1->intersectForPoint(*pol2,val3);
441 int test3_res[4]={0,0,1,0};
442 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
447 void QuadraticPlanarInterpTest::checkNonRegressionOmar0013()
449 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
450 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
452 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
453 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
456 6.123031769111886e-18, 1.7, 1.224606353822377e-17, 1.8, 1.224606353822377e-17, 1.4, 6.123031769111886e-18, 1.5,
457 9.18454765366783e-18, 1.75, 0.2, 1.6, 9.18454765366783e-18, 1.45, 0.1, 1.6 };
460 0, 1, 2, 3, 4, 5, 6, 7 };
461 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
462 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
463 vector<double> val1,val2;
464 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
465 double test1_res[4]={0.,0.,0.1,0.};
466 double test2_res[4]={0.,0.,0.1,0.};
467 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
468 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
472 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
473 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
474 pol1->intersectForPoint(*pol2,val3);
475 int test3_res[4]={0,0,2,0};
476 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
481 void QuadraticPlanarInterpTest::checkNonRegressionOmar0014()
483 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
484 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
486 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
487 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
489 6.123031769111886e-18, 1.55, 1.224606353822377e-17, 1.65, 1.224606353822377e-17, 1.25, 6.123031769111886e-18, 1.35,
490 9.18454765366783e-18, 1.6, 0.2, 1.45, 9.18454765366783e-18, 1.3, 0.1, 1.45 };
493 0, 1, 2, 3, 4, 5, 6, 7 };
494 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
495 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
496 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
499 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
500 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
501 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
505 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
506 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
507 vector<double> val1,val2;
508 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
509 double test1_res[4]={0.,0.,0.15,0.};
510 double test2_res[4]={0.05,0.,0.1,0.};
511 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
512 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
516 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
517 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
518 pol1->intersectForPoint(*pol2,val3);
519 int test3_res[4]={0,0,3,0};
520 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
525 void QuadraticPlanarInterpTest::checkNonRegressionOmar0015()
527 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
528 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
530 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
531 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
533 6.123031769111886e-18, 1.4, 1.224606353822377e-17, 1.5, 1.224606353822377e-17, 1.1, 6.123031769111886e-18, 1.2,
534 9.18454765366783e-18, 1.45, 0.2, 1.3, 9.18454765366783e-18, 1.15, 0.1, 1.3 };
537 0, 1, 2, 3, 4, 5, 6, 7 };
538 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
539 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
540 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
543 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
544 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
545 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
549 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
550 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
551 vector<double> val1,val2;
552 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
553 double test1_res[4]={0.,0.,0.2,0.};
554 double test2_res[4]={0.1,0.,0.1,0.};
555 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
556 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
560 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
561 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
562 pol1->intersectForPoint(*pol2,val3);
563 int test3_res[4]={0,0,4,0};
564 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
569 void QuadraticPlanarInterpTest::checkNonRegressionOmar0016()
571 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
572 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
574 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
575 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
577 6.123031769111886e-18, 1.25, 1.224606353822377e-17, 1.35, 1.224606353822377e-17, 0.95, 6.123031769111886e-18, 1.05,
578 9.18454765366783e-18, 1.3, 0.2, 1.15, 9.18454765366783e-18, 0.9999999999999999, 0.1, 1.15 };
581 0, 1, 2, 3, 4, 5, 6, 7 };
582 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
583 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
584 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
587 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
588 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
589 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
593 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
594 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
595 vector<double> val1,val2;
596 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
597 double test1_res[4]={0.,0.,0.15,0.};
598 double test2_res[4]={0.1,0.,0.05,0.};
599 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
600 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
604 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
605 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
606 pol1->intersectForPoint(*pol2,val3);
607 int test3_res[4]={0,0,3,0};
608 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
613 void QuadraticPlanarInterpTest::checkNonRegressionOmar0017()
615 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
616 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
618 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
619 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
622 6.123031769111886e-18, 1.1, 1.224606353822377e-17, 1.2, 1.224606353822377e-17, 0.8, 6.123031769111886e-18, 0.9,
623 9.18454765366783e-18, 1.15, 0.2, 1, 9.18454765366783e-18, 0.85, 0.1, 1 };
626 0, 1, 2, 3, 4, 5, 6, 7 };
627 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
628 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
629 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
632 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
633 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
634 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
638 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
639 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
640 vector<double> val1,val2;
641 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
642 double test1_res[4]={0.,0.,0.1,0.};
643 double test2_res[4]={0.1,0.,0.,0.};
644 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
645 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
649 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
650 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
651 pol1->intersectForPoint(*pol2,val3);
652 int test3_res[4]={0,0,2,0};
653 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
658 void QuadraticPlanarInterpTest::checkNonRegressionOmar0018()
660 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
661 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
663 -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
664 -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
667 6.123031769111886e-18, 0.95, 1.224606353822377e-17, 1.05, 1.224606353822377e-17, 0.6499999999999999, 6.123031769111886e-18, 0.75,
668 9.18454765366783e-18, 1, 0.2, 0.85, 9.18454765366783e-18, 0.7, 0.1, 0.85 };
671 0, 1, 2, 3, 4, 5, 6, 7 };
672 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
673 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
674 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
677 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
678 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
679 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
683 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
684 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
685 vector<double> val1,val2;
686 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
687 double test1_res[4]={0.,0.,0.05,0.};
688 double test2_res[4]={0.05,0.,0.,0.};
689 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
690 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
694 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
695 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
696 pol1->intersectForPoint(*pol2,val3);
697 int test3_res[4]={0,0,1,0};
698 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
703 void QuadraticPlanarInterpTest::checkNonRegressionOmar0019()
705 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
706 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
708 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
709 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
712 0.9500000000000001, 1.836909530733566e-17, 0.8, 3.673819061467131e-17, 1.4, 0, 1.25, 0,
713 0.8750000000000001, 2.755364296100349e-17, 1.1, 0.3, 1.325, 0, 1.1, 0.15 };
716 0, 1, 2, 3, 4, 5, 6, 7 };
717 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
718 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
719 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
722 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
723 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
724 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
729 void QuadraticPlanarInterpTest::checkNonRegressionOmar0020()
731 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
732 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
734 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
735 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
738 0.05000000000000002, 1.836909530733566e-17, -0.09999999999999998, 3.673819061467131e-17, 0.5, 0, 0.35, 0,
739 -0.02499999999999997, 2.755364296100349e-17, 0.2, 0.3, 0.425, 0, 0.2, 0.15 };
742 0, 1, 2, 3, 4, 5, 6, 7 };
743 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
744 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
745 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
748 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
749 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
750 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
754 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
755 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
756 vector<double> val1,val2;
757 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
758 double test1_res[4]={0.,0.,0.,0.};
759 double test2_res[4]={0.,0.,0.,0.};
760 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
761 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
765 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
766 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
767 pol1->intersectForPoint(*pol2,val3);
768 int test3_res[4]={0,0,0,0};
769 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
774 void QuadraticPlanarInterpTest::checkNonRegressionOmar0021()
776 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
777 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
779 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
780 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
783 -1, -0.07999999999999999, -1.15, -0.07999999999999996, -0.55, -0.08, -0.7, -0.08,
784 -1.075, -0.07999999999999997, -0.85, 0.22, -0.625, -0.08, -0.85, 0.06999999999999999 };
787 0, 1, 2, 3, 4, 5, 6, 7 };
788 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
789 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
790 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0311485,pol1->intersectWith(*pol2),1.e-7);
793 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
794 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
795 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0311485,pol2->intersectWith(*pol1),1.e-7);
799 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
800 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
801 vector<double> val1,val2;
802 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
803 double test1_res[4]={0.162251,0.151523,0.,0.};
804 double test2_res[4]={0.,0.311383,0.,0.0978193};
805 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
806 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
810 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
811 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
812 pol1->intersectForPoint(*pol2,val3);
813 int test3_res[4]={2,2,0,0};
814 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
818 void QuadraticPlanarInterpTest::checkNonRegressionOmar0022()
820 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
821 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
823 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
824 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
827 0.15, -0.07999999999999999, 0, -0.07999999999999996, 0.6, -0.08, 0.45, -0.08,
828 0.07500000000000001, -0.07999999999999997, 0.3, 0.22, 0.5249999999999999, -0.08, 0.3, 0.06999999999999999 };
831 0, 1, 2, 3, 4, 5, 6, 7 };
832 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
833 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
834 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00902229,pol1->intersectWith(*pol2),1.e-8);
837 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
838 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
839 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00902229,pol2->intersectWith(*pol1),1.e-8);
844 void QuadraticPlanarInterpTest::checkNonRegressionOmar0023()
846 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
847 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
849 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
850 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5, };
853 0.4156854249492381, 0.5656854249492381, 0.2656854249492381, 0.5656854249492381, 0.8656854249492381, 0.5656854249492381, 0.7156854249492381, 0.5656854249492381,
854 0.3406854249492381, 0.5656854249492381, 0.5656854249492381, 0.8656854249492381, 0.7906854249492381, 0.5656854249492381, 0.5656854249492381, 0.7156854249492381 };
857 0, 1, 2, 3, 4, 5, 6, 7 };
858 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
859 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
860 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0215659,pol1->intersectWith(*pol2),1.e-7);
863 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
864 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
865 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0215659,pol2->intersectWith(*pol1),1.e-7);
870 void QuadraticPlanarInterpTest::checkNonRegressionOmar0024()
872 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
873 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
875 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
876 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
878 0.5656854249492381, 0.5656854249492381, 0.4156854249492382, 0.5656854249492381, 1.015685424949238, 0.5656854249492381, 0.8656854249492382, 0.5656854249492381,
879 0.4906854249492382, 0.5656854249492381, 0.7156854249492381, 0.8656854249492381, 0.9406854249492381, 0.5656854249492381, 0.7156854249492381, 0.7156854249492381 };
882 0, 1, 2, 3, 4, 5, 6, 7 };
883 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
884 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
885 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol1->intersectWith(*pol2),1.e-8);
888 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
889 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
890 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol2->intersectWith(*pol1),1.e-8);
895 void QuadraticPlanarInterpTest::checkNonRegressionOmar2524()
897 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
898 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
900 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
901 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
903 0.4156854249492382, 0.5656854249492381, 1.015685424949238, 0.5656854249492381, 0.8656854249492382, 0.5656854249492381, 0.5656854249492381, 0.5656854249492381,
904 0.7156854249492381, 0.8656854249492381, 0.9406854249492381, 0.5656854249492381, 0.7156854249492381, 0.7156854249492381, 0.4906854249492382, 0.5656854249492381 };
907 0, 1, 2, 3, 4, 5, 6, 7 };
908 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
909 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
910 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol1->intersectWith(*pol2),1.e-8);
913 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
914 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
915 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00877657,pol2->intersectWith(*pol1),1.e-8);
920 void QuadraticPlanarInterpTest::checkNonRegressionOmar0025()
922 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
923 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
925 -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
926 -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
929 0.715685424949238, 0.5656854249492381, 0.565685424949238, 0.5656854249492381, 1.165685424949238, 0.5656854249492381, 1.015685424949238, 0.5656854249492381,
930 0.6406854249492381, 0.5656854249492381, 0.8656854249492381, 0.8656854249492381, 1.090685424949238, 0.5656854249492381, 0.8656854249492381, 0.7156854249492381 };
933 0, 1, 2, 3, 4, 5, 6, 7 };
934 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
935 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
936 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
939 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
940 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
941 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
946 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
947 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
948 pol1->intersectForPoint(*pol2,val3);
949 int test3_res[4]={0,1,0,0};
950 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
955 void QuadraticPlanarInterpTest::checkNonRegressionOmar0026()
957 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
958 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
960 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
961 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
964 0.1, 0.95, 0.2, 0.95, -0.2, 0.95, -0.1, 0.95,
965 0.15, 0.95, 1.224606353822377e-17, 0.75, -0.15, 0.95, 6.123031769111886e-18, 0.85 };
968 0, 1, 2, 3, 4, 5, 6, 7 };
969 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
970 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
971 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
974 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
975 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
976 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
981 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
982 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
983 pol1->intersectForPoint(*pol2,val3);
984 int test3_res[4]={0,1,0,0};
985 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
990 void QuadraticPlanarInterpTest::checkNonRegressionOmar0027()
992 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
993 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
995 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
996 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
999 -0.1, 0.7, -0.2, 0.7, 0.2, 0.7, 0.1, 0.7,
1000 -0.15, 0.7, 1.224606353822377e-17, 0.8999999999999999, 0.15, 0.7, 6.123031769111886e-18, 0.7999999999999999 };
1003 0, 1, 2, 3, 4, 5, 6, 7 };
1004 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1005 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1006 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00712309,pol1->intersectWith(*pol2),1.e-8);
1009 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1010 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1011 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.00712309,pol2->intersectWith(*pol1),1.e-8);
1015 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1016 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1017 vector<double> val1,val2;
1018 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1019 double test1_res[4]={0.,0.222704,0.,0.};
1020 double test2_res[4]={0.1,0.0465335,0.1,0.092554};
1021 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
1022 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
1026 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1027 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1028 pol1->intersectForPoint(*pol2,val3);
1029 int test3_res[4]={0,4,0,0};
1030 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
1035 void QuadraticPlanarInterpTest::checkNonRegressionOmar0028()
1037 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
1038 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
1040 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
1041 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
1043 double coords2[16]={
1044 -0.07071067811865477, 0.4792893218813453, -0.1414213562373095, 0.4085786437626905, 0.1414213562373095, 0.6914213562373095, 0.07071067811865477, 0.6207106781186548,
1045 -0.1060660171779822, 0.4439339828220179, -0.1414213562373095, 0.6914213562373096, 0.1060660171779822, 0.6560660171779822, -0.07071067811865475, 0.6207106781186548 };
1048 0, 1, 2, 3, 4, 5, 6, 7 };
1049 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1050 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1051 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol1->intersectWith(*pol2),1.e-7);
1054 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1055 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1056 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol2->intersectWith(*pol1),1.e-7);
1060 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1061 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1062 vector<double> val1,val2;
1063 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1064 double test1_res[4]={0.,0.,0.,0.};
1065 double test2_res[4]={0.1,0.628319,0.1,0.314159};
1066 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
1067 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
1071 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1072 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1073 pol1->intersectForPoint(*pol2,val3);
1074 int test3_res[4]={0,1,0,0};
1075 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
1080 void QuadraticPlanarInterpTest::checkNonRegressionOmar0029()
1082 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
1083 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
1085 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
1086 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
1088 double coords2[16]={
1089 -0.07071067811865477, 0.1292893218813453, -0.1414213562373095, 0.05857864376269051, 0.1414213562373095, 0.3414213562373095, 0.07071067811865477, 0.2707106781186548,
1090 -0.1060660171779822, 0.09393398282201787, -0.1414213562373095, 0.3414213562373095, 0.1060660171779822, 0.3060660171779822, -0.07071067811865475, 0.2707106781186548 };
1093 0, 1, 2, 3, 4, 5, 6, 7 };
1094 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1095 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1096 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol1->intersectWith(*pol2),1.e-13);
1099 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1100 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1101 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,pol2->intersectWith(*pol1),1.e-13);
1105 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1106 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1107 vector<double> val1,val2;
1108 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1109 double test1_res[4]={0.,0.,0.,0.};
1110 double test2_res[4]={0.,0.,0.,0.};
1111 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-13)));
1112 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-13)));
1116 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1117 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1118 pol1->intersectForPoint(*pol2,val3);
1119 int test3_res[4]={0,0,0,1};
1120 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));
1125 void QuadraticPlanarInterpTest::checkNonRegressionOmar0030()
1127 INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
1128 INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
1130 -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
1131 -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
1133 double coords2[16]={
1134 -0.4889087296526012, 0.3889087296526012, -0.5889087296526012, 0.3889087296526012, -0.1889087296526012, 0.3889087296526012, -0.2889087296526012, 0.3889087296526012,
1135 -0.5389087296526012, 0.3889087296526012, -0.3889087296526012, 0.5889087296526012, -0.2389087296526012, 0.3889087296526012, -0.3889087296526012, 0.4889087296526012 };
1138 0, 1, 2, 3, 4, 5, 6, 7 };
1139 QuadraticPolygon *pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1140 QuadraticPolygon *pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1141 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol1->intersectWith(*pol2),1.e-7);
1144 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1145 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1146 CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0471239,pol2->intersectWith(*pol1),1.e-7);
1150 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1151 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1152 vector<double> val1,val2;
1153 pol1->intersectForPerimeterAdvanced(*pol2,val1,val2);
1154 double test1_res[4]={0.,0.,0.,0.};
1155 double test2_res[4]={0.1,0.628319,0.1,0.314159};
1156 CPPUNIT_ASSERT(std::equal(val1.begin(),val1.end(),test1_res,DoubleEqual(1e-6)));
1157 CPPUNIT_ASSERT(std::equal(val2.begin(),val2.end(),test2_res,DoubleEqual(1e-6)));
1161 pol1=buildQuadraticPolygonCoarseInfo(coords,tab8,8);
1162 pol2=buildQuadraticPolygonCoarseInfo(coords2,tab8,8);
1163 pol1->intersectForPoint(*pol2,val3);
1164 int test3_res[4]={0,1,0,0};
1165 CPPUNIT_ASSERT(std::equal(val3.begin(),val3.end(),test3_res));