angle calculation fix ; created tests
This commit is contained in:
@@ -87,14 +87,17 @@ class ProjectPresenter(object):
|
||||
|
||||
corner_length_ccw = sqrt((next_corner[0] - corner[0])**2 + (next_corner[1] - corner[1])**2)
|
||||
corner_length_cw = sqrt((previous_corner[0] - corner[0])**2 + (previous_corner[1] - corner[1])**2)
|
||||
k1 = (corner[1] - previous_corner[1]) / (corner[0] - previous_corner[0])
|
||||
k2 = (next_corner[1] - corner[1]) / (next_corner[0] - corner[0])
|
||||
|
||||
k1 = float('Inf') if (corner[0]==previous_corner[0]) else (corner[1] - previous_corner[1]) / (corner[0] - previous_corner[0])
|
||||
k2 = float('Inf') if (corner[0]==next_corner[0]) else (next_corner[1] - corner[1]) / (next_corner[0] - corner[0])
|
||||
|
||||
theta2 = degrees(atan(k2))
|
||||
theta1 = degrees(atan(k1)) - theta2
|
||||
|
||||
if (theta1 < 0):
|
||||
if (k1 < 0 and k2 < 0):
|
||||
theta1 = 360 + theta1
|
||||
elif (k1 < 0 and k2 > 0):
|
||||
elif (k1 <= 0 and k2 >= 0):
|
||||
theta1 = 180 + theta1
|
||||
else:
|
||||
if (k1 > 0 and k2 > 0):
|
||||
@@ -102,8 +105,9 @@ class ProjectPresenter(object):
|
||||
|
||||
if (theta1 < 135):
|
||||
presentable_building.append(Corner(corner[0], corner[1], corner_length_ccw,corner_length_cw, theta1).__dict__)
|
||||
|
||||
previous_corner = corner
|
||||
|
||||
|
||||
|
||||
return result
|
||||
|
||||
|
||||
Reference in New Issue
Block a user