Changeset - 28ca21b89e43
[Not reviewed]
default
0 1 0
Laman - 6 years ago 2019-01-01 11:24:48

fix: returned returns to corners
1 file changed with 8 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/analyzer/corners.py
Show inline comments
 
@@ -55,7 +55,11 @@ class Corners:
 
	#
 
	#  @return True for a convex quadrangle, False for concave and degenerate cases.
 
	def _canonizeOrder(self):
 
		if len(self._corners)!=4: self._is_canon=False
 
		def false():
 
			self._is_canon=False
 
			return False
 

	
 
		if len(self._corners)!=4: return false()
 

	
 
		a,b,c,d=self._corners
 
		abc=doubleTriangleArea(a,b,c)
 
@@ -63,11 +67,11 @@ class Corners:
 
		acd=doubleTriangleArea(a,c,d)
 
		bcd=doubleTriangleArea(b,c,d)
 

	
 
		if any(x==0 for x in (abc,abd,acd,bcd)): self._is_canon=False # collinear degenerate
 
		if any(x==0 for x in (abc,abd,acd,bcd)): return false() # collinear degenerate
 

	
 
		swaps=[(1,3),(0,1),(1,2),(0,3),(2,3),(0,0)]
 
		index=(8 if abc>0 else 0)|(4 if abd>0 else 0)|(2 if acd>0 else 0)|(1 if bcd>0 else 0)
 
		if index%3!=0: return False # concave degenerate
 
		if index%3!=0: return false() # concave degenerate
 
		swap=swaps[index//3]
 

	
 
		self._corners[swap[0]], self._corners[swap[1]] = self._corners[swap[1]], self._corners[swap[0]] # counter-clockwise order
 
@@ -86,6 +90,7 @@ class Corners:
 

	
 
		log.debug(self._corners)
 
		self._is_canon=True # success
 
		return True
 

	
 
	def scale(self,scale):
 
		self._corners=[c * scale for c in self._corners]
0 comments (0 inline, 0 general)