Xpoint
   [напомнить пароль]

Интерполяция

Метки: [без меток]
[удл]
2008-07-04 16:01:26 [обр] Иванов Михаил aka Ivanych(0/70)[досье]

Есть две точки с известными координатами - на рисунке это А1 и D6 (отмечены желтым).

Между этими точками нужно провести прямую.

Для этого, понятно, нужно выполнить линейную интерполяцию. Интерполяция дает точки B2 и C5 (полностью черные). Вроде бы все правильно, но, однако, на построенной прямой получается визуальный разрыв в точках B3 и C4 (зеленые). Чтобы прямая выглядела неразрывной, точки B3 и C4 (зеленые) желательно дорисовать.

Вопрос в том, как эти точки вычислить.

спустя 11 минут [обр] Давид Мзареулян(14/1003)[досье]
Вам нужен алгоритм Брезенхема.
спустя 2 часа 31 минуту [обр] Иванов Михаил aka Ivanych(0/70)[досье]
Я правильно понял, что Брезенхем используется вместо интерполяции?
спустя 3 минуты [обр] Давид Мзареулян(14/1003)[досье]
Алгоритм Брезенхема позволяет решить Вашу задачу. Называть это «интерполяцией» или нет — дело вкуса.
спустя 15 минут [обр] Иванов Михаил aka Ivanych(0/70)[досье]

Погодите, не сбивайте меня с толку.

Интерполяция - это вычисление значения f(x), на отрезке x0 < x < x1, при известных f(x0) и f(x1). Для построения прямой проще всего применить линейную интерполяцию.

А алгоритм Брезенхейма не вычисляет f(x). Да? Что-то я запутался...

спустя 1 час 34 минуты [обр] Давид Мзареулян(14/1003)[досье]

Михаил, ну Вам шашечки нужно или ехать?:) Что такое «интерполяция» на двумерной дискретной сетке — это тема для диплома как минимум. Какой, нафиг, отрезок, если у Вас там дискреты?

Брезенхейм — это способ соединить две клетки без пропусков так, чтобы все промежуточные клетки были максимально близки к прямой в непрерывных координатах. Вот и всё. Все (абсолютно) устройства, умеющий рисовать прямые, рисуют их по этом алгоритму.

спустя 14 минут [обр] Евгений Петров(0/1055)[досье]

Иванов Михаил aka Ivanych[досье]
Вы сбиваете меня с толку. Линейная интерполяция - замена некой гладкой непрерывной функции на заданном отрезке линейной функцией.

В вашем случае ничего подобного нет - как можно заменить прямую другой прямой? ИМХО тут задача зеркальная - нужно построить некую кусочную функцию в качестве замены прямой. По сути это - вопрос выбора из 3-х возможных вариантов. Передвигаясь по аргументу с большим диапазоном (пользуясь алгоритмом Брезенхема) мы этот выбор сокращаем до 2-х вариантов.

спустя 2 дня 15 часов [обр] Иванов Михаил aka Ivanych(0/70)[досье]

Давид Мзареулян[досье]
Переформулирую.

Линейная интерполяция позволяет мне вычислить координату Y для произвольного X. Сразу вычислить - взял X, получил Y. А Брезенхем так не позволяет, по Брезенхему мне нужно последовательно перебрать все предыдущие X. Да?

Я это не к тому, что мне Березенхем чем-то не нравится, я тут просто в интерполяциях погряз и запутался:)

Евгений Петров[досье]
Это какие 3 возможных варианта?

спустя 50 минут [обр] Давид Мзареулян(14/1003)[досье]
Иванов Михаил aka Ivanych[досье] Нет, Брезенхем «сразу» не позволяет. Ну назовите это «итерационной интерполяцией», я не знаю…
спустя 10 часов [обр] Иванов Михаил aka Ivanych(0/70)[досье]

Давид Мзареулян[досье] Ок, это вполне достаточный ответ.

Вопрос закрыт.

Powered by POEM™ Engine Copyright © 2002-2005