X-Git-Url: http://git.tomasm.cz/imago.git/blobdiff_plain/890c6fc05c289fa41d3db2f17037f3b7428151fb..bcca367769de787a06e04d957d49468975ac2616:/linef.py diff --git a/linef.py b/linef.py index ebfdbea..fbd1368 100755 --- a/linef.py +++ b/linef.py @@ -3,7 +3,7 @@ """Go image recognition lines-finding module""" import sys -import math +from math import sin, cos, pi try: import Image, ImageDraw @@ -106,7 +106,7 @@ def find_lines(image, show_all, do_something, verbose): draw.line(line_from_angl_dist(line, image.size), fill=(120, 255, 120)) if show_all: do_something(image_g, "the grid") - + return lines def combine(image1, image2): @@ -122,8 +122,15 @@ def combine(image1, image2): return on_both def line_from_angl_dist((angle, distance), size): - x1 = - size[0] / 2 - y1 = int(round((x1 * math.sin(angle) - distance) / math.cos(angle))) + size[1] / 2 - x2 = size[0] / 2 - y2 = int(round((x2 * math.sin(angle) - distance) / math.cos(angle))) + size[1] / 2 - return [(0, y1), (size[0] - 1, y2)] + if pi / 4 < angle < 3 * pi / 4: + y1 = - size[1] / 2 + x1 = int(round((y1 * cos(angle) + distance) / sin(angle))) + size[0] / 2 + y2 = size[1] / 2 + x2 = int(round((y2 * cos(angle) + distance) / sin(angle))) + size[0] / 2 + return [(x1, 0), (x2, size[1])] + else: + x1 = - size[0] / 2 + y1 = int(round((x1 * sin(angle) - distance) / cos(angle))) + size[1] / 2 + x2 = size[0] / 2 + y2 = int(round((x2 * sin(angle) - distance) / cos(angle))) + size[1] / 2 + return [(0, y1), (size[0], y2)]