2010-06-14 4 views
1

Мне нужно нарисовать линию, которая связывает две точки.Уравнение прямой линии между двумя точками

Я делаю это, на Java. Я получаю две точки в качестве параметров, и мне приходится вычислять, находится ли прямая линия между ними, внутри черной фигуры.

Я разработал собственное решение, используя уравнение прямой линии, но мои результаты отличаются от использования «профессиональных» программ (таких как GIMP или даже MS Paint).

Вот пример того, что я хочу:

alt text http://img411.imageshack.us/img411/788/img1q.png

Но мой алгоритм делает это:

alt text http://img267.imageshack.us/img267/1908/img2d.png

* Зеленая точка находится вне фигуры, и это не возможное.

Любые идеи? Кто-нибудь знает, какой код используется для этого, в «профессиональных» приложениях?

Спасибо! Daniel.

EDIT: Изображения

+0

Отсутствие изображений. –

+0

Daniel. На этот вопрос нельзя ответить. Вы не предоставили нам достаточно информации, и этот вопрос, вероятно, будет закрыт. Чтобы остановить это, вы можете отредактировать свой вопрос и рассказать нам, какую технологию вы используете (операционная система и средства разработки), и сказать нам * точно, что вы пытаетесь достичь (например, как вы определяете линию, которая будет нарисована ? как список точек?) –

+0

Также, какой алгоритм вы используете? –

ответ

3

Похоже, вы обрезаете вместо округления до ближайшего пикселя. Трудно видеть на этих маленьких пятнах черных чернил. Не могли бы вы опубликовать код?

+1

Действительно. Похоже, ваш алгоритм ожидает, что будет 2 сегмента линии вместо 3 сегментов. Правильно ли ваш dx/dy? (Учитывая, что вы раунд, а не усечение). – berkus

+0

WOW! Питер, ты гений !!! Я использовал целые числа, и в этом была проблема! спасибо !! : D – dafero

3

программы "Профессионал", скорее всего, использование Bresenham's line algorithm.

+0

Питер решил мое сомнение, но спасибо за информацию в любом случае! – dafero

1

прямогонного линии рисуются с использованием алгоритма Bresenham обычно. Я не понял вашу точку зрения о том, что зеленая точка находится вне фигуры - есть отсечение, чтобы не тратить время на рисование за пределами видимой области.

+0

Питер решил мои сомнения, но спасибо за информацию в любом случае! – dafero