diff --git a/test_files/meshing/bug11646.txt b/test_files/meshing/bug11646.txt new file mode 100644 index 00000000..aac9056d --- /dev/null +++ b/test_files/meshing/bug11646.txt @@ -0,0 +1,57 @@ +BEGIN_POLYGON +OUTSIDE 40 +0.0 0.0 +0.0 10.0 +0.0 20.0 +0.0 30.0 +0.0 40.0 +0.0 50.0 +0.0 60.0 +0.0 70.0 +0.0 80.0 +0.0 90.0 +0.0 100.0 +10.0 100.0 +20.0 100.0 +30.0 100.0 +40.0 100.0 +50.0 100.0 +60.0 100.0 +70.0 100.0 +80.0 100.0 +90.0 100.0 +100.0 100.0 +100.0 90.0 +100.0 80.0 +100.0 70.0 +100.0 60.0 +100.0 50.0 +100.0 40.0 +100.0 30.0 +100.0 20.0 +100.0 10.0 +100.0 0.0 +90.0 0.0 +80.0 0.0 +70.0 0.0 +60.0 0.0 +50.0 0.0 +40.0 0.0 +30.0 0.0 +20.0 0.0 +10.0 0.0 +BIAS 0.3 +SIZE_FUNCTION +LINEAR 8 8 +-10.0 -10.0 10.0 +110.0 -10.0 10.0 +110.0 110.0 10.0 +-10.0 110.0 10.0 +30.0 70.0 5.0 +70.0 70.0 5.0 +70.0 30.0 5.0 +30.0 30.0 5.0 +0 6 7 4 0 7 0 1 6 6 1 5 3 4 5 1 2 5 2 3 5 3 0 4 +ELEVATION_FUNCTION +END_POLYGON +RETURN_CELL_POLYGONS diff --git a/test_files/meshing/bug11646_base.2dm b/test_files/meshing/bug11646_base.2dm new file mode 100644 index 00000000..a415dceb --- /dev/null +++ b/test_files/meshing/bug11646_base.2dm @@ -0,0 +1,1060 @@ +MESH2D +E3T 1 1 40 41 1 +E3T 2 1 41 2 1 +E3T 3 2 41 42 1 +E3T 4 2 42 3 1 +E3T 5 3 42 43 1 +E3T 6 3 43 4 1 +E3T 7 4 43 44 1 +E3T 8 4 44 45 1 +E3T 9 4 45 5 1 +E3T 10 5 45 46 1 +E3T 11 5 46 6 1 +E3T 12 6 46 47 1 +E3T 13 6 47 48 1 +E3T 14 6 48 7 1 +E3T 15 7 48 49 1 +E3T 16 7 49 50 1 +E3T 17 7 50 8 1 +E3T 18 8 50 51 1 +E3T 19 8 51 52 1 +E3T 20 8 52 9 1 +E3T 21 9 52 53 1 +E3T 22 9 53 54 1 +E3T 23 9 54 10 1 +E3T 24 10 54 55 1 +E3T 25 10 55 56 1 +E3T 26 10 56 11 1 +E3T 27 11 56 12 1 +E3T 28 12 56 57 1 +E3T 29 12 57 13 1 +E3T 30 13 57 58 1 +E3T 31 13 58 59 1 +E3T 32 13 59 14 1 +E3T 33 14 59 60 1 +E3T 34 14 60 61 1 +E3T 35 14 61 15 1 +E3T 36 15 61 62 1 +E3T 37 15 62 63 1 +E3T 38 15 63 16 1 +E3T 39 16 63 64 1 +E3T 40 16 64 65 1 +E3T 41 16 65 17 1 +E3T 42 17 65 66 1 +E3T 43 17 66 67 1 +E3T 44 17 67 18 1 +E3T 45 18 67 68 1 +E3T 46 18 68 69 1 +E3T 47 18 69 19 1 +E3T 48 19 69 70 1 +E3T 49 19 70 71 1 +E3T 50 19 71 20 1 +E3T 51 20 71 72 1 +E3T 52 20 72 21 1 +E3T 53 21 72 22 1 +E3T 54 22 72 73 1 +E3T 55 22 73 23 1 +E3T 56 23 73 74 1 +E3T 57 23 74 75 1 +E3T 58 23 75 24 1 +E3T 59 24 75 76 1 +E3T 60 24 76 77 1 +E3T 61 24 77 25 1 +E3T 62 25 77 78 1 +E3T 63 25 78 79 1 +E3T 64 25 79 26 1 +E3T 65 26 79 80 1 +E3T 66 26 80 81 1 +E3T 67 26 81 27 1 +E3T 68 27 81 82 1 +E3T 69 27 82 83 1 +E3T 70 27 83 28 1 +E3T 71 28 83 84 1 +E3T 72 28 84 85 1 +E3T 73 28 85 29 1 +E3T 74 29 85 86 1 +E3T 75 29 86 87 1 +E3T 76 29 87 30 1 +E3T 77 30 87 88 1 +E3T 78 30 88 89 1 +E3T 79 30 89 31 1 +E3T 80 31 89 32 1 +E3T 81 32 89 90 1 +E3T 82 32 90 33 1 +E3T 83 33 90 91 1 +E3T 84 33 91 92 1 +E3T 85 33 92 34 1 +E3T 86 34 92 93 1 +E3T 87 34 93 94 1 +E3T 88 34 94 35 1 +E3T 89 35 94 95 1 +E3T 90 35 95 96 1 +E3T 91 35 96 36 1 +E3T 92 36 96 97 1 +E3T 93 36 97 98 1 +E3T 94 36 98 37 1 +E3T 95 37 98 99 1 +E3T 96 37 99 100 1 +E3T 97 37 100 38 1 +E3T 98 38 100 101 1 +E3T 99 38 101 102 1 +E3T 100 38 102 39 1 +E3T 101 39 102 103 1 +E3T 102 39 103 40 1 +E3T 103 40 103 41 1 +E3T 104 41 103 104 1 +E3T 105 41 104 42 1 +E3T 106 42 104 105 1 +E3T 107 42 105 43 1 +E3T 108 43 105 106 1 +E3T 109 43 106 44 1 +E3T 110 44 106 107 1 +E3T 111 44 107 45 1 +E3T 112 45 107 108 1 +E3T 113 45 108 46 1 +E3T 114 46 108 109 1 +E3T 115 46 109 47 1 +E3T 116 47 109 110 1 +E3T 117 47 110 48 1 +E3T 118 48 110 111 1 +E3T 119 48 111 49 1 +E3T 120 49 111 112 1 +E3T 121 49 112 50 1 +E3T 122 50 112 113 1 +E3T 123 50 113 51 1 +E3T 124 51 113 114 1 +E3T 125 51 114 52 1 +E3T 126 52 114 115 1 +E3T 127 52 115 53 1 +E3T 128 53 115 116 1 +E3T 129 53 116 54 1 +E3T 130 54 116 117 1 +E3T 131 54 117 55 1 +E3T 132 55 117 56 1 +E3T 133 56 117 57 1 +E3T 134 57 117 118 1 +E3T 135 57 118 58 1 +E3T 136 58 118 119 1 +E3T 137 58 119 59 1 +E3T 138 59 119 120 1 +E3T 139 59 120 60 1 +E3T 140 60 120 121 1 +E3T 141 60 121 61 1 +E3T 142 61 121 122 1 +E3T 143 61 122 62 1 +E3T 144 62 122 123 1 +E3T 145 62 123 63 1 +E3T 146 63 123 124 1 +E3T 147 63 124 64 1 +E3T 148 64 124 125 1 +E3T 149 64 125 65 1 +E3T 150 65 125 126 1 +E3T 151 65 126 66 1 +E3T 152 66 126 127 1 +E3T 153 66 127 67 1 +E3T 154 67 127 128 1 +E3T 155 67 128 68 1 +E3T 156 68 128 129 1 +E3T 157 68 129 69 1 +E3T 158 69 129 130 1 +E3T 159 69 130 70 1 +E3T 160 70 130 131 1 +E3T 161 70 131 71 1 +E3T 162 71 131 132 1 +E3T 163 71 132 72 1 +E3T 164 72 132 73 1 +E3T 165 73 132 74 1 +E3T 166 74 132 133 1 +E3T 167 74 133 75 1 +E3T 168 75 133 134 1 +E3T 169 75 134 76 1 +E3T 170 76 134 135 1 +E3T 171 76 135 77 1 +E3T 172 77 135 136 1 +E3T 173 77 136 78 1 +E3T 174 78 136 137 1 +E3T 175 78 137 79 1 +E3T 176 79 137 138 1 +E3T 177 79 138 80 1 +E3T 178 80 138 139 1 +E3T 179 80 139 81 1 +E3T 180 81 139 140 1 +E3T 181 81 140 82 1 +E3T 182 82 140 141 1 +E3T 183 82 141 83 1 +E3T 184 83 141 142 1 +E3T 185 83 142 84 1 +E3T 186 84 142 143 1 +E3T 187 84 143 85 1 +E3T 188 85 143 144 1 +E3T 189 85 144 86 1 +E3T 190 86 144 145 1 +E3T 191 86 145 87 1 +E3T 192 87 145 146 1 +E3T 193 87 146 88 1 +E3T 194 88 146 89 1 +E3T 195 89 146 147 1 +E3T 196 89 147 90 1 +E3T 197 90 147 91 1 +E3T 198 91 147 148 1 +E3T 199 91 148 92 1 +E3T 200 92 148 149 1 +E3T 201 92 149 93 1 +E3T 202 93 149 150 1 +E3T 203 93 150 94 1 +E3T 204 94 150 151 1 +E3T 205 94 151 95 1 +E3T 206 95 151 152 1 +E3T 207 95 152 96 1 +E3T 208 96 152 153 1 +E3T 209 96 153 97 1 +E3T 210 97 153 154 1 +E3T 211 97 154 98 1 +E3T 212 98 154 155 1 +E3T 213 98 155 99 1 +E3T 214 99 155 156 1 +E3T 215 99 156 100 1 +E3T 216 100 156 157 1 +E3T 217 100 157 101 1 +E3T 218 101 157 158 1 +E3T 219 101 158 102 1 +E3T 220 102 104 103 1 +E3T 221 102 158 159 1 +E3T 222 102 159 104 1 +E3T 223 104 159 105 1 +E3T 224 105 159 184 1 +E3T 225 105 184 185 1 +E3T 226 105 185 106 1 +E3T 227 106 185 186 1 +E3T 228 106 186 107 1 +E3T 229 107 186 187 1 +E3T 230 107 187 108 1 +E3T 231 108 187 188 1 +E3T 232 108 188 109 1 +E3T 233 109 188 189 1 +E3T 234 109 189 110 1 +E3T 235 110 189 111 1 +E3T 236 111 189 190 1 +E3T 237 111 190 112 1 +E3T 238 112 190 191 1 +E3T 239 112 191 113 1 +E3T 240 113 191 192 1 +E3T 241 113 192 114 1 +E3T 242 114 192 193 1 +E3T 243 114 193 115 1 +E3T 244 115 193 194 1 +E3T 245 115 194 116 1 +E3T 246 116 118 117 1 +E3T 247 116 194 195 1 +E3T 248 116 195 118 1 +E3T 249 118 195 119 1 +E3T 250 119 195 196 1 +E3T 251 119 196 120 1 +E3T 252 120 196 197 1 +E3T 253 120 197 121 1 +E3T 254 121 197 198 1 +E3T 255 121 198 122 1 +E3T 256 122 198 199 1 +E3T 257 122 199 123 1 +E3T 258 123 199 200 1 +E3T 259 123 200 124 1 +E3T 260 124 200 201 1 +E3T 261 124 201 125 1 +E3T 262 125 201 202 1 +E3T 263 125 202 126 1 +E3T 264 126 202 203 1 +E3T 265 126 203 127 1 +E3T 266 127 203 204 1 +E3T 267 127 204 128 1 +E3T 268 128 204 205 1 +E3T 269 128 205 129 1 +E3T 270 129 205 206 1 +E3T 271 129 206 130 1 +E3T 272 130 206 207 1 +E3T 273 130 207 131 1 +E3T 274 131 133 132 1 +E3T 275 131 207 133 1 +E3T 276 133 160 134 1 +E3T 277 133 207 160 1 +E3T 278 134 160 161 1 +E3T 279 134 161 135 1 +E3T 280 135 161 162 1 +E3T 281 135 162 136 1 +E3T 282 136 162 163 1 +E3T 283 136 163 137 1 +E3T 284 137 163 164 1 +E3T 285 137 164 138 1 +E3T 286 138 164 165 1 +E3T 287 138 165 139 1 +E3T 288 139 165 166 1 +E3T 289 139 166 140 1 +E3T 290 140 166 167 1 +E3T 291 140 167 141 1 +E3T 292 141 167 168 1 +E3T 293 141 168 142 1 +E3T 294 142 168 169 1 +E3T 295 142 169 143 1 +E3T 296 143 169 170 1 +E3T 297 143 170 144 1 +E3T 298 144 170 171 1 +E3T 299 144 171 145 1 +E3T 300 145 171 172 1 +E3T 301 145 172 146 1 +E3T 302 146 172 147 1 +E3T 303 147 172 173 1 +E3T 304 147 173 148 1 +E3T 305 148 173 174 1 +E3T 306 148 174 149 1 +E3T 307 149 174 175 1 +E3T 308 149 175 150 1 +E3T 309 150 175 176 1 +E3T 310 150 176 151 1 +E3T 311 151 176 177 1 +E3T 312 151 177 152 1 +E3T 313 152 177 178 1 +E3T 314 152 178 153 1 +E3T 315 153 178 179 1 +E3T 316 153 179 154 1 +E3T 317 154 179 180 1 +E3T 318 154 180 155 1 +E3T 319 155 180 181 1 +E3T 320 155 181 156 1 +E3T 321 156 181 182 1 +E3T 322 156 182 157 1 +E3T 323 157 182 158 1 +E3T 324 158 182 183 1 +E3T 325 158 183 159 1 +E3T 326 159 183 184 1 +E3T 327 160 207 238 1 +E3T 328 160 238 161 1 +E3T 329 161 238 239 1 +E3T 330 161 239 162 1 +E3T 331 162 239 240 1 +E3T 332 162 240 163 1 +E3T 333 163 240 241 1 +E3T 334 163 241 164 1 +E3T 335 164 241 242 1 +E3T 336 164 242 165 1 +E3T 337 165 242 243 1 +E3T 338 165 243 166 1 +E3T 339 166 243 244 1 +E3T 340 166 244 167 1 +E3T 341 167 244 245 1 +E3T 342 167 245 168 1 +E3T 343 168 245 246 1 +E3T 344 168 246 169 1 +E3T 345 169 246 247 1 +E3T 346 169 247 170 1 +E3T 347 170 247 248 1 +E3T 348 170 248 171 1 +E3T 349 171 173 172 1 +E3T 350 171 174 173 1 +E3T 351 171 248 174 1 +E3T 352 174 208 175 1 +E3T 353 174 248 208 1 +E3T 354 175 208 209 1 +E3T 355 175 209 176 1 +E3T 356 176 209 210 1 +E3T 357 176 210 177 1 +E3T 358 177 210 211 1 +E3T 359 177 211 178 1 +E3T 360 178 211 212 1 +E3T 361 178 212 179 1 +E3T 362 179 212 213 1 +E3T 363 179 213 180 1 +E3T 364 180 213 214 1 +E3T 365 180 214 181 1 +E3T 366 181 214 215 1 +E3T 367 181 215 182 1 +E3T 368 182 215 216 1 +E3T 369 182 216 183 1 +E3T 370 183 216 217 1 +E3T 371 183 217 184 1 +E3T 372 184 217 185 1 +E3T 373 185 217 218 1 +E3T 374 185 218 186 1 +E3T 375 186 218 219 1 +E3T 376 186 219 187 1 +E3T 377 187 219 220 1 +E3T 378 187 220 188 1 +E3T 379 188 220 221 1 +E3T 380 188 221 189 1 +E3T 381 189 221 222 1 +E3T 382 189 222 190 1 +E3T 383 190 222 223 1 +E3T 384 190 223 191 1 +E3T 385 191 223 224 1 +E3T 386 191 224 192 1 +E3T 387 192 224 225 1 +E3T 388 192 225 193 1 +E3T 389 193 225 226 1 +E3T 390 193 226 194 1 +E3T 391 194 226 195 1 +E3T 392 195 226 196 1 +E3T 393 196 226 227 1 +E3T 394 196 227 197 1 +E3T 395 197 227 228 1 +E3T 396 197 228 198 1 +E3T 397 198 228 229 1 +E3T 398 198 229 199 1 +E3T 399 199 229 230 1 +E3T 400 199 230 200 1 +E3T 401 200 230 231 1 +E3T 402 200 231 201 1 +E3T 403 201 231 232 1 +E3T 404 201 232 202 1 +E3T 405 202 232 233 1 +E3T 406 202 233 203 1 +E3T 407 203 233 234 1 +E3T 408 203 234 204 1 +E3T 409 204 234 235 1 +E3T 410 204 235 205 1 +E3T 411 205 235 236 1 +E3T 412 205 236 206 1 +E3T 413 206 236 237 1 +E3T 414 206 237 207 1 +E3T 415 207 237 238 1 +E3T 416 208 248 268 1 +E3T 417 208 268 269 1 +E3T 418 208 269 209 1 +E3T 419 209 269 270 1 +E3T 420 209 270 210 1 +E3T 421 210 270 271 1 +E3T 422 210 271 211 1 +E3T 423 211 271 272 1 +E3T 424 211 272 212 1 +E3T 425 212 272 213 1 +E3T 426 213 272 273 1 +E3T 427 213 273 214 1 +E3T 428 214 273 274 1 +E3T 429 214 274 275 1 +E3T 430 214 275 215 1 +E3T 431 215 275 276 1 +E3T 432 215 276 216 1 +E3T 433 216 276 217 1 +E3T 434 217 276 277 1 +E3T 435 217 277 218 1 +E3T 436 218 277 278 1 +E3T 437 218 278 219 1 +E3T 438 219 278 279 1 +E3T 439 219 279 220 1 +E3T 440 220 279 280 1 +E3T 441 220 280 221 1 +E3T 442 221 280 281 1 +E3T 443 221 281 222 1 +E3T 444 222 281 282 1 +E3T 445 222 282 223 1 +E3T 446 223 282 283 1 +E3T 447 223 283 224 1 +E3T 448 224 283 284 1 +E3T 449 224 284 225 1 +E3T 450 225 249 226 1 +E3T 451 225 284 249 1 +E3T 452 226 249 227 1 +E3T 453 227 249 228 1 +E3T 454 228 249 250 1 +E3T 455 228 250 229 1 +E3T 456 229 250 251 1 +E3T 457 229 251 230 1 +E3T 458 230 251 252 1 +E3T 459 230 252 231 1 +E3T 460 231 252 253 1 +E3T 461 231 253 232 1 +E3T 462 232 253 254 1 +E3T 463 232 254 233 1 +E3T 464 233 254 255 1 +E3T 465 233 255 234 1 +E3T 466 234 255 256 1 +E3T 467 234 256 235 1 +E3T 468 235 256 257 1 +E3T 469 235 257 236 1 +E3T 470 236 257 258 1 +E3T 471 236 258 237 1 +E3T 472 237 258 259 1 +E3T 473 237 259 238 1 +E3T 474 238 259 239 1 +E3T 475 239 259 260 1 +E3T 476 239 260 240 1 +E3T 477 240 260 261 1 +E3T 478 240 261 241 1 +E3T 479 241 261 262 1 +E3T 480 241 262 242 1 +E3T 481 242 262 263 1 +E3T 482 242 263 243 1 +E3T 483 243 263 264 1 +E3T 484 243 264 244 1 +E3T 485 244 264 265 1 +E3T 486 244 265 245 1 +E3T 487 245 265 266 1 +E3T 488 245 266 246 1 +E3T 489 246 266 267 1 +E3T 490 246 267 247 1 +E3T 491 247 267 268 1 +E3T 492 247 268 248 1 +E3T 493 249 284 250 1 +E3T 494 250 284 314 1 +E3T 495 250 285 251 1 +E3T 496 250 314 285 1 +E3T 497 251 285 286 1 +E3T 498 251 286 252 1 +E3T 499 252 286 287 1 +E3T 500 252 287 253 1 +E3T 501 253 287 288 1 +E3T 502 253 288 254 1 +E3T 503 254 288 289 1 +E3T 504 254 289 255 1 +E3T 505 255 289 290 1 +E3T 506 255 290 256 1 +E3T 507 256 290 291 1 +E3T 508 256 291 257 1 +E3T 509 257 291 292 1 +E3T 510 257 292 258 1 +E3T 511 258 292 259 1 +E3T 512 259 292 260 1 +E3T 513 260 292 293 1 +E3T 514 260 293 294 1 +E3T 515 260 294 261 1 +E3T 516 261 294 295 1 +E3T 517 261 295 262 1 +E3T 518 262 295 296 1 +E3T 519 262 296 263 1 +E3T 520 263 296 297 1 +E3T 521 263 297 264 1 +E3T 522 264 297 298 1 +E3T 523 264 298 265 1 +E3T 524 265 298 299 1 +E3T 525 265 299 266 1 +E3T 526 266 299 300 1 +E3T 527 266 300 267 1 +E3T 528 267 300 268 1 +E3T 529 268 300 301 1 +E3T 530 268 301 269 1 +E3T 531 269 301 270 1 +E3T 532 270 301 302 1 +E3T 533 270 302 271 1 +E3T 534 271 302 303 1 +E3T 535 271 303 272 1 +E3T 536 272 303 304 1 +E3T 537 272 304 273 1 +E3T 538 273 304 305 1 +E3T 539 273 305 274 1 +E3T 540 274 305 306 1 +E3T 541 274 306 275 1 +E3T 542 275 306 307 1 +E3T 543 275 307 276 1 +E3T 544 276 307 277 1 +E3T 545 277 307 308 1 +E3T 546 277 308 278 1 +E3T 547 278 308 309 1 +E3T 548 278 309 279 1 +E3T 549 279 309 310 1 +E3T 550 279 310 280 1 +E3T 551 280 310 311 1 +E3T 552 280 311 281 1 +E3T 553 281 311 312 1 +E3T 554 281 312 282 1 +E3T 555 282 312 313 1 +E3T 556 282 313 283 1 +E3T 557 283 313 314 1 +E3T 558 283 314 284 1 +E3T 559 285 314 315 1 +E3T 560 285 315 286 1 +E3T 561 286 315 316 1 +E3T 562 286 316 287 1 +E3T 563 287 316 317 1 +E3T 564 287 317 288 1 +E3T 565 288 317 318 1 +E3T 566 288 318 319 1 +E3T 567 288 319 289 1 +E3T 568 289 319 320 1 +E3T 569 289 320 290 1 +E3T 570 290 320 321 1 +E3T 571 290 321 291 1 +E3T 572 291 293 292 1 +E3T 573 291 321 293 1 +E3T 574 293 321 294 1 +E3T 575 294 321 322 1 +E3T 576 294 322 295 1 +E3T 577 295 322 323 1 +E3T 578 295 323 296 1 +E3T 579 296 323 324 1 +E3T 580 296 324 297 1 +E3T 581 297 324 325 1 +E3T 582 297 325 298 1 +E3T 583 298 325 326 1 +E3T 584 298 326 299 1 +E3T 585 299 326 327 1 +E3T 586 299 327 328 1 +E3T 587 299 328 300 1 +E3T 588 300 328 301 1 +E3T 589 301 328 302 1 +E3T 590 302 328 329 1 +E3T 591 302 329 303 1 +E3T 592 303 329 330 1 +E3T 593 303 330 304 1 +E3T 594 304 330 331 1 +E3T 595 304 331 305 1 +E3T 596 305 331 332 1 +E3T 597 305 332 306 1 +E3T 598 306 332 333 1 +E3T 599 306 333 307 1 +E3T 600 307 333 308 1 +E3T 601 308 333 334 1 +E3T 602 308 334 309 1 +E3T 603 309 334 335 1 +E3T 604 309 335 310 1 +E3T 605 310 335 336 1 +E3T 606 310 336 311 1 +E3T 607 311 336 337 1 +E3T 608 311 337 312 1 +E3T 609 312 337 338 1 +E3T 610 312 338 313 1 +E3T 611 313 315 314 1 +E3T 612 313 338 315 1 +E3T 613 315 338 316 1 +E3T 614 316 338 339 1 +E3T 615 316 339 317 1 +E3T 616 317 339 340 1 +E3T 617 317 340 318 1 +E3T 618 318 340 341 1 +E3T 619 318 341 319 1 +E3T 620 319 341 342 1 +E3T 621 319 342 320 1 +E3T 622 320 322 321 1 +E3T 623 320 342 343 1 +E3T 624 320 343 322 1 +E3T 625 322 343 323 1 +E3T 626 323 343 344 1 +E3T 627 323 344 324 1 +E3T 628 324 344 345 1 +E3T 629 324 345 325 1 +E3T 630 325 345 346 1 +E3T 631 325 346 326 1 +E3T 632 326 346 347 1 +E3T 633 326 347 327 1 +E3T 634 327 329 328 1 +E3T 635 327 347 329 1 +E3T 636 329 347 348 1 +E3T 637 329 348 330 1 +E3T 638 330 348 349 1 +E3T 639 330 349 331 1 +E3T 640 331 349 332 1 +E3T 641 332 349 350 1 +E3T 642 332 350 333 1 +E3T 643 333 350 351 1 +E3T 644 333 351 334 1 +E3T 645 334 351 335 1 +E3T 646 335 351 352 1 +E3T 647 335 352 336 1 +E3T 648 336 352 353 1 +E3T 649 336 353 337 1 +E3T 650 337 353 354 1 +E3T 651 337 354 338 1 +E3T 652 338 354 339 1 +E3T 653 339 354 364 1 +E3T 654 339 364 340 1 +E3T 655 340 355 341 1 +E3T 656 340 364 355 1 +E3T 657 341 355 356 1 +E3T 658 341 356 342 1 +E3T 659 342 344 343 1 +E3T 660 342 356 344 1 +E3T 661 344 356 357 1 +E3T 662 344 357 345 1 +E3T 663 345 357 358 1 +E3T 664 345 358 346 1 +E3T 665 346 358 359 1 +E3T 666 346 359 347 1 +E3T 667 347 359 348 1 +E3T 668 348 359 360 1 +E3T 669 348 360 349 1 +E3T 670 349 360 361 1 +E3T 671 349 361 350 1 +E3T 672 350 361 362 1 +E3T 673 350 362 351 1 +E3T 674 351 362 352 1 +E3T 675 352 362 363 1 +E3T 676 352 363 353 1 +E3T 677 353 363 364 1 +E3T 678 353 364 354 1 +E3T 679 355 364 365 1 +E3T 680 355 365 356 1 +E3T 681 356 365 357 1 +E3T 682 357 365 366 1 +E3T 683 357 366 358 1 +E3T 684 358 360 359 1 +E3T 685 358 366 367 1 +E3T 686 358 367 360 1 +E3T 687 360 367 361 1 +E3T 688 361 367 362 1 +E3T 689 362 367 363 1 +E3T 690 363 365 364 1 +E3T 691 363 367 365 1 +E3T 692 365 367 366 1 +ND 1 0.0 0.0 0.0 +ND 2 0.0 10.0 0.0 +ND 3 0.0 20.0 0.0 +ND 4 0.0 30.0 0.0 +ND 5 0.0 40.0 0.0 +ND 6 0.0 50.0 0.0 +ND 7 0.0 60.0 0.0 +ND 8 0.0 70.0 0.0 +ND 9 0.0 80.0 0.0 +ND 10 0.0 90.0 0.0 +ND 11 0.0 100.0 0.0 +ND 12 10.0 100.0 0.0 +ND 13 20.0 100.0 0.0 +ND 14 30.0 100.0 0.0 +ND 15 40.0 100.0 0.0 +ND 16 50.0 100.0 0.0 +ND 17 60.0 100.0 0.0 +ND 18 70.0 100.0 0.0 +ND 19 80.0 100.0 0.0 +ND 20 90.0 100.0 0.0 +ND 21 100.0 100.0 0.0 +ND 22 100.0 90.0 0.0 +ND 23 100.0 80.0 0.0 +ND 24 100.0 70.0 0.0 +ND 25 100.0 60.0 0.0 +ND 26 100.0 50.0 0.0 +ND 27 100.0 40.0 0.0 +ND 28 100.0 30.0 0.0 +ND 29 100.0 20.0 0.0 +ND 30 100.0 10.0 0.0 +ND 31 100.0 0.0 0.0 +ND 32 90.0 0.0 0.0 +ND 33 80.0 0.0 0.0 +ND 34 70.0 0.0 0.0 +ND 35 60.0 0.0 0.0 +ND 36 50.0 0.0 0.0 +ND 37 40.0 0.0 0.0 +ND 38 30.0 0.0 0.0 +ND 39 20.0 0.0 0.0 +ND 40 10.0 0.0 0.0 +ND 41 7.60761076 7.99569945 0.0 +ND 42 7.80271746 16.2409249 0.0 +ND 43 7.67042307 24.2223639 0.0 +ND 44 8.6416802 31.0807032 0.0 +ND 45 7.17866135 37.1273324 0.0 +ND 46 6.93826633 43.9397037 0.0 +ND 47 8.04565765 49.0891375 0.0 +ND 48 6.60439356 54.3183676 0.0 +ND 49 8.11401139 59.1786955 0.0 +ND 50 6.65401799 64.3205613 0.0 +ND 51 8.09796254 69.2084872 0.0 +ND 52 6.63455731 74.3472979 0.0 +ND 53 8.16915969 79.2342856 0.0 +ND 54 6.56291391 84.2355144 0.0 +ND 55 7.61744879 88.411906 0.0 +ND 56 7.8557976 93.3804646 0.0 +ND 57 15.1728454 93.3110103 0.0 +ND 58 20.3189752 91.9023156 0.0 +ND 59 25.3692595 93.3299654 0.0 +ND 60 30.3655416 91.8897267 0.0 +ND 61 35.3880286 93.3301698 0.0 +ND 62 40.3898867 91.8881769 0.0 +ND 63 45.4034486 93.3309342 0.0 +ND 64 50.4149217 91.8889264 0.0 +ND 65 55.4191568 93.3318693 0.0 +ND 66 60.439972 91.8896912 0.0 +ND 67 65.4348784 93.3328343 0.0 +ND 68 70.4649828 91.8904533 0.0 +ND 69 75.4656848 93.3114563 0.0 +ND 70 80.534177 91.8480132 0.0 +ND 71 85.5549481 93.1577513 0.0 +ND 72 92.5185287 92.8450971 0.0 +ND 73 93.7560876 86.3224225 0.0 +ND 74 91.8233373 82.0173302 0.0 +ND 75 93.2695657 76.6584194 0.0 +ND 76 91.8971519 72.0096194 0.0 +ND 77 93.3366132 66.6029997 0.0 +ND 78 91.89138 61.9876603 0.0 +ND 79 93.3368161 56.5877728 0.0 +ND 80 91.8919783 51.9625823 0.0 +ND 81 93.3378351 46.5717976 0.0 +ND 82 91.8928284 41.9373592 0.0 +ND 83 93.3389424 36.5557738 0.0 +ND 84 91.8916698 31.9115922 0.0 +ND 85 93.3144359 26.5390624 0.0 +ND 86 91.9093247 21.9285329 0.0 +ND 87 93.353882 16.5974008 0.0 +ND 88 92.3049993 12.3133278 0.0 +ND 89 91.7957076 7.30687563 0.0 +ND 90 85.0628725 6.29666724 0.0 +ND 91 80.3267347 8.14168985 0.0 +ND 92 75.1726852 6.6620387 0.0 +ND 93 70.3244041 8.1384277 0.0 +ND 94 65.1684532 6.66942086 0.0 +ND 95 60.2823877 8.11287194 0.0 +ND 96 55.1493744 6.67173295 0.0 +ND 97 50.2526292 8.12398096 0.0 +ND 98 45.1233447 6.70168672 0.0 +ND 99 40.1932845 8.16333298 0.0 +ND 100 34.9257625 6.8051371 0.0 +ND 101 29.0326301 8.41524217 0.0 +ND 102 22.1721159 8.03806365 0.0 +ND 103 14.7526646 6.79807311 0.0 +ND 104 14.7784014 13.5946787 0.0 +ND 105 15.3286683 21.2848263 0.0 +ND 106 14.6590527 28.6114376 0.0 +ND 107 14.0996136 35.625622 0.0 +ND 108 13.2991272 41.8280348 0.0 +ND 109 13.1087488 47.4844428 0.0 +ND 110 12.3291081 52.3469865 0.0 +ND 111 12.9266862 56.8734686 0.0 +ND 112 12.8032619 62.0741357 0.0 +ND 113 12.8418101 66.9577708 0.0 +ND 114 12.7905019 72.1859759 0.0 +ND 115 12.796077 77.1131332 0.0 +ND 116 13.2537942 82.6393221 0.0 +ND 117 12.401851 87.8239457 0.0 +ND 118 17.0783415 87.2307904 0.0 +ND 119 22.391432 87.1706109 0.0 +ND 120 27.2604893 87.1884283 0.0 +ND 121 32.5137178 87.1976725 0.0 +ND 122 37.3904307 87.1930534 0.0 +ND 123 42.6081688 87.1807277 0.0 +ND 124 47.491587 87.1919748 0.0 +ND 125 52.7110615 87.1817458 0.0 +ND 126 57.593903 87.190856 0.0 +ND 127 62.8143163 87.1831073 0.0 +ND 128 67.6963791 87.1897674 0.0 +ND 129 72.9252914 87.1798088 0.0 +ND 130 77.858211 87.1517817 0.0 +ND 131 83.1022079 86.7219507 0.0 +ND 132 87.8904858 86.8642923 0.0 +ND 133 86.5126954 81.2378084 0.0 +ND 134 87.2399868 75.7317494 0.0 +ND 135 87.1988112 70.4609982 0.0 +ND 136 87.1793301 65.5738098 0.0 +ND 137 87.1990819 60.3467037 0.0 +ND 138 87.1786205 55.468112 0.0 +ND 139 87.2005095 50.2429603 0.0 +ND 140 87.1775671 45.3653431 0.0 +ND 141 87.2019002 40.1399325 0.0 +ND 142 87.1763767 35.2620198 0.0 +ND 143 87.1955108 30.0222438 0.0 +ND 144 87.1130195 25.1810121 0.0 +ND 145 87.2860452 19.9566882 0.0 +ND 146 87.6117042 14.6606598 0.0 +ND 147 84.1965374 12.2650961 0.0 +ND 148 78.5742525 12.822027 0.0 +ND 149 73.7274213 12.8890267 0.0 +ND 150 68.4616821 12.8328926 0.0 +ND 151 63.5640313 12.8115886 0.0 +ND 152 58.3515886 12.8051614 0.0 +ND 153 53.4591717 12.8122031 0.0 +ND 154 48.2035146 12.8362834 0.0 +ND 155 43.2583126 12.9036012 0.0 +ND 156 37.8825675 13.168651 0.0 +ND 157 32.9022592 12.8859354 0.0 +ND 158 27.2211745 14.2467925 0.0 +ND 159 21.0336963 16.1862332 0.0 +ND 160 82.8547873 78.0622257 0.0 +ND 161 82.6864333 73.2646508 0.0 +ND 162 82.6559939 68.258815 0.0 +ND 163 82.6776774 63.2174304 0.0 +ND 164 82.647944 58.1710047 0.0 +ND 165 82.680931 53.1150503 0.0 +ND 166 82.6476495 48.069657 0.0 +ND 167 82.6809877 43.0128723 0.0 +ND 168 82.6666615 37.97853 0.0 +ND 169 82.6705103 32.8898709 0.0 +ND 170 82.5672976 27.7959012 0.0 +ND 171 82.1245099 22.3523525 0.0 +ND 172 83.9659546 17.7353626 0.0 +ND 173 80.9782303 16.9348636 0.0 +ND 174 76.8817122 18.3671549 0.0 +ND 175 71.4584098 17.3232954 0.0 +ND 176 66.3104769 17.3496599 0.0 +ND 177 61.254344 17.3364437 0.0 +ND 178 56.2155853 17.3093985 0.0 +ND 179 51.0166389 17.3119159 0.0 +ND 180 45.6921744 17.6012414 0.0 +ND 181 40.0162056 17.9781237 0.0 +ND 182 33.5558796 18.3672486 0.0 +ND 183 27.2314064 20.3965454 0.0 +ND 184 22.2034107 22.6816802 0.0 +ND 185 20.6959364 28.1651532 0.0 +ND 186 19.956947 34.3267423 0.0 +ND 187 19.0929282 40.5842896 0.0 +ND 188 18.1819439 46.663902 0.0 +ND 189 17.3333406 52.8282855 0.0 +ND 190 17.4368843 58.7719836 0.0 +ND 191 17.3819308 63.9999352 0.0 +ND 192 17.3282435 69.0742956 0.0 +ND 193 17.4301642 74.0881241 0.0 +ND 194 17.0554931 78.8031498 0.0 +ND 195 19.2750079 82.6531176 0.0 +ND 196 24.1716294 82.5840143 0.0 +ND 197 29.1507712 82.7189545 0.0 +ND 198 34.1261347 82.637746 0.0 +ND 199 39.1581119 82.6568907 0.0 +ND 200 44.2185071 82.6464644 0.0 +ND 201 49.2785621 82.6784105 0.0 +ND 202 54.321371 82.6458938 0.0 +ND 203 59.3811902 82.6789832 0.0 +ND 204 64.4216426 82.6496405 0.0 +ND 205 69.4980397 82.7164054 0.0 +ND 206 74.6250784 82.6593162 0.0 +ND 207 80.0008808 81.9868621 0.0 +ND 208 73.3667011 22.2724307 0.0 +ND 209 68.3686515 21.66544 0.0 +ND 210 63.272632 21.760216 0.0 +ND 211 58.1801707 21.8505234 0.0 +ND 212 53.4896309 21.2966958 0.0 +ND 213 48.5659279 22.0626921 0.0 +ND 214 42.558909 22.999045 0.0 +ND 215 36.4954226 23.5258759 0.0 +ND 216 31.2229938 24.2797308 0.0 +ND 217 26.9190664 27.7198821 0.0 +ND 218 25.4726997 33.4837042 0.0 +ND 219 24.711345 39.1718124 0.0 +ND 220 23.7540981 44.820059 0.0 +ND 221 22.7857824 50.5113454 0.0 +ND 222 22.1596435 56.0434521 0.0 +ND 223 21.8852612 61.4240282 0.0 +ND 224 21.7929632 66.5850661 0.0 +ND 225 21.938345 71.6977222 0.0 +ND 226 21.7604482 77.1648878 0.0 +ND 227 26.0300012 78.6851829 0.0 +ND 228 30.4568638 78.212339 0.0 +ND 229 35.3430531 78.2118017 0.0 +ND 230 40.4051525 78.2733244 0.0 +ND 231 45.4310333 78.250606 0.0 +ND 232 50.4399206 78.253034 0.0 +ND 233 55.4594162 78.2601578 0.0 +ND 234 60.48323 78.2912933 0.0 +ND 235 65.511574 78.3036281 0.0 +ND 236 70.5219755 78.3650144 0.0 +ND 237 75.2057941 78.0133978 0.0 +ND 238 78.6029702 75.8325713 0.0 +ND 239 78.2886312 70.4052802 0.0 +ND 240 78.2328451 65.4074914 0.0 +ND 241 78.2705456 60.3697234 0.0 +ND 242 78.2680867 55.3390302 0.0 +ND 243 78.2664562 50.3214163 0.0 +ND 244 78.2593274 45.2852577 0.0 +ND 245 78.270604 40.2858321 0.0 +ND 246 78.328334 35.2547944 0.0 +ND 247 78.2257565 30.1361327 0.0 +ND 248 77.8290889 24.749231 0.0 +ND 249 26.5629358 74.2949741 0.0 +ND 250 31.6589589 73.118496 0.0 +ND 251 37.225629 73.9705328 0.0 +ND 252 42.2609059 73.8994032 0.0 +ND 253 47.2648076 73.8556341 0.0 +ND 254 52.2364813 73.8556214 0.0 +ND 255 57.226772 73.9113272 0.0 +ND 256 62.1698171 73.917931 0.0 +ND 257 67.1265723 74.0566859 0.0 +ND 258 71.4584845 74.4281419 0.0 +ND 259 74.5013573 72.4705445 0.0 +ND 260 73.7804641 67.4006858 0.0 +ND 261 73.9131594 62.2947974 0.0 +ND 262 73.9101399 57.2847845 0.0 +ND 263 73.9110553 52.2906057 0.0 +ND 264 73.9105933 47.2965689 0.0 +ND 265 73.8551978 42.2940295 0.0 +ND 266 73.8674288 37.4003391 0.0 +ND 267 74.4368046 32.7626341 0.0 +ND 268 73.242321 28.2221654 0.0 +ND 269 69.5818516 25.7918136 0.0 +ND 270 64.7217568 26.1600332 0.0 +ND 271 59.5202722 26.2531232 0.0 +ND 272 53.7520054 26.0640002 0.0 +ND 273 47.9947429 26.8243847 0.0 +ND 274 43.3587751 28.1297474 0.0 +ND 275 38.5770867 28.2500111 0.0 +ND 276 33.1488153 29.0477381 0.0 +ND 277 30.8176408 33.1601918 0.0 +ND 278 29.8042745 38.0152514 0.0 +ND 279 29.0503138 43.1839937 0.0 +ND 280 28.1991956 48.3656198 0.0 +ND 281 27.4077605 53.6283126 0.0 +ND 282 26.7167595 58.8805626 0.0 +ND 283 26.3172288 64.0665574 0.0 +ND 284 26.5731189 69.39964 0.0 +ND 285 34.8808735 69.6780979 0.0 +ND 286 39.3510657 69.4836689 0.0 +ND 287 44.3550163 69.5754132 0.0 +ND 288 49.845354 69.2580035 0.0 +ND 289 55.3024904 69.5632318 0.0 +ND 290 60.2949261 69.6499374 0.0 +ND 291 65.089046 70.2264599 0.0 +ND 292 70.1583623 70.7267749 0.0 +ND 293 68.9144881 67.7943198 0.0 +ND 294 69.5840042 64.0385703 0.0 +ND 295 69.5732376 59.2636139 0.0 +ND 296 69.592948 54.2692736 0.0 +ND 297 69.571087 49.2818462 0.0 +ND 298 69.6024685 44.2224361 0.0 +ND 299 69.2935435 38.8738891 0.0 +ND 300 70.2085166 33.6568358 0.0 +ND 301 67.4572251 30.09546 0.0 +ND 302 62.2139809 30.6665717 0.0 +ND 303 57.1356666 30.796912 0.0 +ND 304 52.0838283 31.0085978 0.0 +ND 305 47.0537066 31.7285728 0.0 +ND 306 41.9641176 32.5679044 0.0 +ND 307 36.7695392 33.0673365 0.0 +ND 308 34.872284 37.0012627 0.0 +ND 309 33.8160313 41.7087385 0.0 +ND 310 33.1601323 46.6702371 0.0 +ND 311 32.397307 51.6511745 0.0 +ND 312 31.7017039 56.7113102 0.0 +ND 313 31.0821956 61.6967752 0.0 +ND 314 30.759368 67.0259969 0.0 +ND 315 35.3122593 64.9843628 0.0 +ND 316 40.2696124 64.9126356 0.0 +ND 317 45.4108812 65.2761807 0.0 +ND 318 49.931699 64.7264297 0.0 +ND 319 54.4308169 65.3187195 0.0 +ND 320 59.6712725 65.0674269 0.0 +ND 321 64.5706665 66.325833 0.0 +ND 322 65.0559526 62.0522344 0.0 +ND 323 65.280863 57.0909177 0.0 +ND 324 65.2007851 52.2276046 0.0 +ND 325 65.2832019 47.2449341 0.0 +ND 326 65.2723068 42.3206623 0.0 +ND 327 64.544854 38.0796145 0.0 +ND 328 65.521676 34.4583923 0.0 +ND 329 60.1687775 35.3943431 0.0 +ND 330 54.9371487 35.4119777 0.0 +ND 331 50.3350707 35.2728351 0.0 +ND 332 45.9070482 36.3992281 0.0 +ND 333 40.8590928 37.1204822 0.0 +ND 334 38.0987696 40.3466968 0.0 +ND 335 37.8397536 44.7898632 0.0 +ND 336 37.186931 49.6528179 0.0 +ND 337 36.4326958 54.5700569 0.0 +ND 338 36.4252403 59.989124 0.0 +ND 339 42.4130453 60.6114486 0.0 +ND 340 47.3623043 60.6422337 0.0 +ND 341 52.5457303 60.9211183 0.0 +ND 342 57.3282487 60.6634548 0.0 +ND 343 61.4750879 60.156188 0.0 +ND 344 60.5533334 55.6001406 0.0 +ND 345 60.9440703 50.4330351 0.0 +ND 346 60.9934699 45.4894248 0.0 +ND 347 60.6654257 40.5165402 0.0 +ND 348 55.9730724 39.7434426 0.0 +ND 349 50.6835576 39.7705828 0.0 +ND 350 45.6311053 40.6034238 0.0 +ND 351 42.073756 42.3164623 0.0 +ND 352 41.8037654 47.2268136 0.0 +ND 353 41.3084954 52.0349763 0.0 +ND 354 40.3950426 56.5637724 0.0 +ND 355 50.3093634 56.9448076 0.0 +ND 356 55.0220276 56.7474776 0.0 +ND 357 56.7504835 53.0638968 0.0 +ND 358 56.192324 48.4652003 0.0 +ND 359 57.0958092 43.9578497 0.0 +ND 360 52.7160857 44.3780073 0.0 +ND 361 48.6499848 43.9734062 0.0 +ND 362 45.813648 45.6111811 0.0 +ND 363 46.2019459 50.3287229 0.0 +ND 364 45.653512 55.3892312 0.0 +ND 365 51.0195929 53.0645278 0.0 +ND 366 53.5334861 51.0552606 0.0 +ND 367 50.4170268 48.339102 0.0 diff --git a/test_files/meshing/case100.txt b/test_files/meshing/case100.txt index 993980a5..f95261c0 100644 --- a/test_files/meshing/case100.txt +++ b/test_files/meshing/case100.txt @@ -327,7 +327,8 @@ INSIDE 126 0.0 30.0 0.0 20.0 0.0 10.0 -SIZE_FUNCTION LINEAR 7 +SIZE_FUNCTION +LINEAR 7 0 -200.0 400.0 10.0 400.0 400.0 10.0 -200.0 -200.0 10.0 @@ -335,7 +336,8 @@ SIZE_FUNCTION LINEAR 7 100.0 100.0 20.0 -75.0 -75.0 5.0 275.0 -75.0 5.0 -ELEVATION_FUNCTION IDW 5 +ELEVATION_FUNCTION +IDW 5 0 -200.0 400.0 200.0 400.0 400.0 250.0 -200.0 -200.0 150.0 diff --git a/test_files/meshing/case101.txt b/test_files/meshing/case101.txt index 69626e19..ee514c21 100644 --- a/test_files/meshing/case101.txt +++ b/test_files/meshing/case101.txt @@ -328,7 +328,8 @@ INSIDE 126 0.0 20.0 0.0 10.0 CONST_SIZE_FUNCTION 50.0 0.5 -ELEVATION_FUNCTION IDW 5 +ELEVATION_FUNCTION +IDW 5 0 -200.0 400.0 200.0 400.0 400.0 250.0 -200.0 -200.0 150.0 diff --git a/test_files/meshing/case102.txt b/test_files/meshing/case102.txt index a1aa4703..4e5a2e27 100644 --- a/test_files/meshing/case102.txt +++ b/test_files/meshing/case102.txt @@ -328,7 +328,8 @@ INSIDE 126 0.0 20.0 0.0 10.0 CONST_SIZE_FUNCTION 50.0 0.5 -ELEVATION_FUNCTION IDW 5 +ELEVATION_FUNCTION +IDW 5 0 -200.0 400.0 200.0 400.0 400.0 250.0 -200.0 -200.0 150.0 diff --git a/test_files/meshing/case103.txt b/test_files/meshing/case103.txt index 5a33873f..ba67eb88 100644 --- a/test_files/meshing/case103.txt +++ b/test_files/meshing/case103.txt @@ -328,7 +328,8 @@ INSIDE 126 10.0 0.0 0.0 0.0 CONST_SIZE_FUNCTION 50.0 0.5 -ELEVATION_FUNCTION IDW 5 +ELEVATION_FUNCTION +IDW 5 0 -200.0 400.0 200.0 400.0 400.0 250.0 -200.0 -200.0 150.0 diff --git a/xmsmesh/meshing/MeMultiPolyMesher.cpp b/xmsmesh/meshing/MeMultiPolyMesher.cpp index 5c956cea..68674fc1 100644 --- a/xmsmesh/meshing/MeMultiPolyMesher.cpp +++ b/xmsmesh/meshing/MeMultiPolyMesher.cpp @@ -291,20 +291,23 @@ void MeMultiPolyMesherImpl::EnsureProperPolygonInputs(MeMultiPolyMesherIo& a_io) for (size_t i = 0; i < a_io.m_polys.size(); ++i) { MePolyInput& polyInput = a_io.m_polys[i]; - auto &first = polyInput.m_outPoly.front(); - auto &last = polyInput.m_outPoly.back(); - if (gmEqualPointsXY(first, last, tol)) + if (!polyInput.m_outPoly.empty()) { - polyInput.m_outPoly.pop_back(); - } - - for (size_t j = 0; j < polyInput.m_insidePolys.size(); ++j) - { - auto &first = polyInput.m_insidePolys[j].front(); - auto &last = polyInput.m_insidePolys[j].back(); + auto &first = polyInput.m_outPoly.front(); + auto &last = polyInput.m_outPoly.back(); if (gmEqualPointsXY(first, last, tol)) { - polyInput.m_insidePolys[j].pop_back(); + polyInput.m_outPoly.pop_back(); + } + + for (size_t j = 0; j < polyInput.m_insidePolys.size(); ++j) + { + auto &first = polyInput.m_insidePolys[j].front(); + auto &last = polyInput.m_insidePolys[j].back(); + if (gmEqualPointsXY(first, last, tol)) + { + polyInput.m_insidePolys[j].pop_back(); + } } } } @@ -313,7 +316,9 @@ void MeMultiPolyMesherImpl::EnsureProperPolygonInputs(MeMultiPolyMesherIo& a_io) for (size_t i = 0; i < a_io.m_polys.size(); ++i) { MePolyInput& polyInput = a_io.m_polys[i]; - double area = gmPolygonArea(&polyInput.m_outPoly[0], polyInput.m_outPoly.size()); + double area(0); + if (!polyInput.m_outPoly.empty()) + area = gmPolygonArea(&polyInput.m_outPoly[0], polyInput.m_outPoly.size()); if (area > 0) { std::reverse(polyInput.m_outPoly.begin(), polyInput.m_outPoly.end()); @@ -383,6 +388,39 @@ bool MeMultiPolyMesherImpl::ValidateInput(const MeMultiPolyMesherIo& a_io) << polyInput.m_polyCorners.size() << ". It must be size 0 or 3.\n"; errors += ss.str(); } + // check size function + BSHP sf = polyInput.m_sizeFunction; + if (sf) + { + // get the min/max of the scalars + BSHP scalars = sf->GetScalars(); + auto result = std::minmax_element(scalars->begin(), scalars->end()); + double sMin = static_cast(*result.first); + double sMax = static_cast(*result.second); + BSHP idw = BDPC(sf); + BSHP linear = BDPC(sf); + double minTruncVal(0); + if (linear) + { + if (!linear->GetTruncateInterpolatedValues()) + linear->SetTrunc(sMax, sMin); + minTruncVal = linear->GetTruncMin(); + } + if (idw) + { + if (!idw->GetTruncateInterpolatedValues()) + idw->SetTrunc(sMax, sMin); + minTruncVal = idw->GetTruncMin(); + } + + // make sure the min truncation is positive + if (minTruncVal <= 0) + { + std::stringstream ss; + ss << "Error: Size function minimum value is <= 0. Size function values must be > 0.\n"; + errors += ss.str(); + } + } } if (a_io.m_checkTopology) @@ -1060,6 +1098,25 @@ void MeMultiPolyMesherUnitTests::testCheckForIntersections5() TS_ASSERT_EQUALS(expected, errors); } // MeMultiPolyMesherUnitTests::testCheckForIntersections5 +//------------------------------------------------------------------------------ +/// \brief Tests sending empty outer polygon. +//------------------------------------------------------------------------------ +void MeMultiPolyMesherUnitTests::testEmptyOuterPolygon() +{ + MeMultiPolyMesherIo input; + input.m_polys.push_back(MePolyInput()); + BSHP mesher = MeMultiPolyMesher::New(); + bool asserting = xmAsserting(); + xmAsserting() = false; + mesher->MeshIt(input); + xmAsserting() = asserting; + std::string errors = XmLog::Instance().GetAndClearStackStr(); + std::string expected = + "---Error: Outer polygon index 0 is empty.\n" + "\n\n"; + + TS_ASSERT_EQUALS(expected, errors); +} // MeMultiPolyMesherUnitTests::testEmptyOuterPolygon //} // namespace xms diff --git a/xmsmesh/meshing/MeMultiPolyMesher.t.h b/xmsmesh/meshing/MeMultiPolyMesher.t.h index 337f343d..0994bce1 100644 --- a/xmsmesh/meshing/MeMultiPolyMesher.t.h +++ b/xmsmesh/meshing/MeMultiPolyMesher.t.h @@ -29,6 +29,7 @@ class MeMultiPolyMesherUnitTests : public CxxTest::TestSuite void testCheckForIntersections3(); void testCheckForIntersections4(); void testCheckForIntersections5(); + void testEmptyOuterPolygon(); }; //} // namespace xms diff --git a/xmsmesh/meshing/MeMultiPolyTo2dm.cpp b/xmsmesh/meshing/MeMultiPolyTo2dm.cpp index ae4573c3..b8529bc8 100644 --- a/xmsmesh/meshing/MeMultiPolyTo2dm.cpp +++ b/xmsmesh/meshing/MeMultiPolyTo2dm.cpp @@ -770,5 +770,11 @@ void MeMultiPolyTo2dmIntermediateTests::testInternalFeaturesCase2() { iTestFromPolyFile("internalFeatures/case2", 10); } // MeMultiPolyTo2dmIntermediateTests::testInternalFeaturesCase2 - +//------------------------------------------------------------------------------ +/// \brief Test for a linear size function that has holes in the triangulation +//------------------------------------------------------------------------------ +void MeMultiPolyTo2dmIntermediateTests::testbug11646() +{ + iTestFromPolyFile("bug11646", 10); +} // MeMultiPolyTo2dmIntermediateTests::testbug11646 #endif // CXX_TEST diff --git a/xmsmesh/meshing/MeMultiPolyTo2dm.t.h b/xmsmesh/meshing/MeMultiPolyTo2dm.t.h index 679743ac..6da07f4d 100644 --- a/xmsmesh/meshing/MeMultiPolyTo2dm.t.h +++ b/xmsmesh/meshing/MeMultiPolyTo2dm.t.h @@ -46,6 +46,7 @@ class MeMultiPolyTo2dmIntermediateTests : public CxxTest::TestSuite void testInternalFeaturesCase0(); void testInternalFeaturesCase1(); void testInternalFeaturesCase2(); + void testbug11646(); }; //} // namespace xms diff --git a/xmsmesh/meshing/MePolyRedistributePts.cpp b/xmsmesh/meshing/MePolyRedistributePts.cpp index e75aa72b..2a334a55 100644 --- a/xmsmesh/meshing/MePolyRedistributePts.cpp +++ b/xmsmesh/meshing/MePolyRedistributePts.cpp @@ -446,10 +446,17 @@ void MePolyRedistributePtsImpl::IntersectWithTris(VecPt3d& a_pts) if (i < a_pts.size() - 1) p1 = a_pts[i + 1]; m_polyIntersector->TraverseLineSegment(p0.x, p0.y, p1.x, p1.y, polys, pts); - auto start = pts.begin(); - if (i > 0) - ++start; - newPts.insert(newPts.end(), start, pts.end()); + if (!pts.empty()) + { + auto start = pts.begin(); + if (i > 0) + ++start; + newPts.insert(newPts.end(), start, pts.end()); + } + else + { + newPts.push_back(p1); + } } a_pts.swap(newPts); a_pts.pop_back(); @@ -655,7 +662,8 @@ VecPt3d MePolyRedistributePtsImpl::RedistPts(const VecPt3d& a_pts, const VecDbl& { aveTincrement += tVals[i] - tVals[i - 1]; } - aveTincrement /= (tVals.size() - 1); + if (tVals.size() > 1) + aveTincrement /= (tVals.size() - 1); VecPt3d ret; // adjust the tvals based on what was left over when processing the last diff --git a/xmsmesh/tutorial/TutMeshing.cpp b/xmsmesh/tutorial/TutMeshing.cpp index 5d1c1f0f..22faba76 100644 --- a/xmsmesh/tutorial/TutMeshing.cpp +++ b/xmsmesh/tutorial/TutMeshing.cpp @@ -140,7 +140,8 @@ bool tutReadMeshIoFromFile(const std::string& a_fname, MeMultiPolyMesherIo& a_io interp = InterpIdw::New(); } - os >> numpts; + int numtri; + os >> numpts >> numtri; BSHP vpts(new VecPt3d()); VecPt3d& pts(*vpts); for (int i = 0; i < (int)numpts; ++i) @@ -148,12 +149,19 @@ bool tutReadMeshIoFromFile(const std::string& a_fname, MeMultiPolyMesherIo& a_io os >> pt.x >> pt.y >> pt.z; pts.push_back(pt); } + BSHP tris(new VecInt()); + for (int i = 0; i < numtri; ++i) + { + int t; + os >> t; + tris->push_back(t); + } if (interp) { - BSHP tris(new VecInt()); TrTriangulatorPoints tri(pts, *tris); - tri.Triangulate(); + if (tris->empty()) + tri.Triangulate(); interp->SetPtsTris(vpts, tris); if ("SIZE_FUNCTION" == card) p->m_sizeFunction = interp;