| 276 | return aBorder |
| 277 | |
| 278 | def FitsBorder(aBorder, nNook, aV, temp): |
| 279 | nAligned = aV[1] |
| 280 | nL = len(aBorder) |
| 281 | for nBack in range(4): |
| 282 | btest = aBorder[(nNook - nBack) % nL] |
| 283 | angle1 = temp.angles[(nAligned + nBack) % 4] |
| 284 | t = btest.angle - angle1 |
| 285 | if t < -nSmall: # conflict |
| 286 | return False |
| 287 | elif t > nSmall: # still room |
| 288 | break |
| 289 | # tight angle fit, test lengths |
| 290 | nTestBorder = (nNook - nBack - 1) % nL |
| 291 | nTestShape = (nAligned + nBack) % 4 |
| 292 | btest = aBorder[nTestBorder] |
| 293 | if btest.length <> temp.length[nTestShape]: # length mismatch |
| 294 | return False |
| 295 | for nForward in range(4): |
| 296 | btest = aBorder[(nNook + nForward + 1) % nL] |
| 297 | angle1 = temp.angles[(nAligned - nForward - 1) % 4] |
| 298 | t = btest.angle - angle1 |
| 299 | if t < -nSmall: # conflict |
| 300 | return False |
| 301 | elif t > nSmall: # still room |
| 302 | break |
| 303 | # tight angle fit, test lengths |
| 304 | nTestBorder = (nNook + nForward + 1) % nL |
| 305 | nTestShape = (nAligned - nForward - 2) % 4 |
| 306 | btest = aBorder[nTestBorder] |
| 307 | if btest.length <> temp.length[nTestShape]: # length mismatch |
| 308 | return False |
| 309 | aBorder[nNook].nBack = nBack |
| 310 | aBorder[nNook].nForward = nForward |
| 311 | return True |
| 312 | |
| 313 | |
| 314 | |