Найти - Пользователи
Полная версия: Алгоритм разбиения средней точкой
Начало » Python для новичков » Алгоритм разбиения средней точкой
1
Wolko_dav
Всем привет. Ткните носом в ошибку… Вообщем алгоритм отсечения от отрезка, при отображение в прямоугольнике.
Вот код:
LEFT = 1
RIGHT = 2
BOT = 4
TOP = 8
 
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
 
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 p1, p2, count
    if code_a & code_b:
        return
 
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    average_point(rect, p1, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0))
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    average_point(rect, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0), p2)
Народ, пожалуйста, ткните носом в ошибку в коде… Не вижу в упор. Могу дать ссылку на алгоритм.
Wolko_dav
Народ, если чего докинуть, напишите, скину.
Singularitty
нет спасибо
  p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
    print p1.x, p1.y, '  ', p2.x, p2.y, '  ', Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).x, Point((p1.x + p2.x)/2.0, (p1.y + p2.y)/2.0).y, '  '
Wolko_dav
Singularitty, это было для отладки сделано… print можно убрать.
Wolko_dav
Ау?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB