MCPcopy Create free account
hub / github.com/ActiveState/code / FitsBorder

Function FitsBorder

recipes/Python/577405_Penrose_Tiler/recipe-577405.py:278–311  ·  view source on GitHub ↗
(aBorder, nNook, aV, temp)

Source from the content-addressed store, hash-verified

276 return aBorder
277
278def 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

Callers 1

FillPlaneFunction · 0.85

Calls 1

rangeFunction · 0.85

Tested by

no test coverage detected