【发布时间】:2014-03-28 21:29:13
【问题描述】:
python(2.7) 中的这个中点算法不起作用。他并没有退出递归。错误在哪里?请帮帮我。
# Where is point
def vcode(rect, p):
value = 0
if p.x < rect.x_min:
value += LEFT
if p.x >= rect.x_max:
value += RIGHT
if p.y < rect.y_min:
value += BOT
if p.y >= rect.y_max:
value += TOP
return value
# algorithm
def average_point(rect, p1, p2, count=0):
code_a = vcode(rect, p1)
code_b = vcode(rect, p2)
if math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y)) < EPS:
return
if not (code_a | code_b):
return
if code_a & code_b:
return
mid = Point((p2.x+p1.x)/2.0, (p2.y+p1.y)/2.0)
count += 1
average_point(rect, p1, mid, count)
mid.x = mid.x+1
mid.y = mid.y+1
average_point(rect, mid, p2, count)
return count
p1, p2 是Point( class, fields(x, y));
rect 是Rectangle( class, fields(x_min, y_min, x_max, y_max));
【问题讨论】:
标签: python algorithm graphics geometry