Russian Qt Forum
Ноябрь 24, 2024, 17:11
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Описание поверхности из дискретных точек функцией - интерполирование
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Описание поверхности из дискретных точек функцией - интерполирование (Прочитано 6229 раз)
daimon
Гость
Описание поверхности из дискретных точек функцией - интерполирование
«
:
Июнь 09, 2010, 11:34 »
Бикубическая интерполяция в большинстве случаев не справляется. Имеет ли смысл интеполировать плоскость кривыми Безье и как это сделать?
Пример для 2D плоскости. Как переделать для 3D (x,y,z)? Лучше бы избавится от класса QPainterPath и сделать методом для массивов.
«
Последнее редактирование: Июнь 09, 2010, 12:29 от daimon
»
Записан
Mityai
Гость
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #1 :
Июнь 25, 2010, 16:30 »
Если интересуют методы интерполяций (кривые Безье, сплайны и тому подобное), то это книга Роджерса "Математические основы машинной графики" за 2001 год, могу даж не полениться и выложить, если действительно нужно.
Записан
ieroglif
Гость
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #2 :
Июнь 25, 2010, 17:26 »
Цитата: Mityai от Июнь 25, 2010, 16:30
Если интересуют методы интерполяций (кривые Безье, сплайны и тому подобное), то это книга Роджерса "Математические основы машинной графики" за 2001 год, могу даж не полениться и выложить, если действительно нужно.
надо
выложи.
так же могу выложить на свой серв, что бы там лежало и все качали.
единственная проблема - у меня жёсткий инет и почему-то нормально скачать могу только с rghost.ru - если туда выложишь, то перекачаю и выложу у себя. но самое идеальное - это прямой линк
тогда сразу перекачаю к себе.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #3 :
Июнь 25, 2010, 23:09 »
Цитата: daimon от Июнь 09, 2010, 11:34
Бикубическая интерполяция в большинстве случаев не справляется.
Идеального сплайна пока не существует
Цитата: daimon от Июнь 09, 2010, 11:34
Имеет ли смысл интеполировать плоскость кривыми Безье и как это сделать?
Пример для 2D плоскости. Как переделать для 3D (x,y,z)?
Вычисления одинаковы в 2D и 3D. Безье сплайн хорош когда пользователь может его подогнать интерактивно. Обычно это выглядит как 2 вектора (касательная) которые появляются из выбранной точке (см. напр. Photoshop). Часто также возникает потребность разбить сплайн в точке ("колено"). Если такая интерактивность не планируется, то Безье может давать "петли" и др. артефакты, поэтому лучше ограничиться бикубиком
Записан
Mityai
Гость
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #4 :
Июнь 28, 2010, 09:28 »
Цитата: Igors от Июнь 25, 2010, 23:09
единственная проблема - у меня жёсткий инет и почему-то нормально скачать могу только с rghost.ru - если туда выложишь, то перекачаю и выложу у себя. но самое идеальное - это прямой линк
тогда сразу перекачаю к себе.
Прямого линка нет, мне эта книга в наследство от одногруппника досталась:) На rghost выложу в ближайшее время, отпишусь.
«
Последнее редактирование: Июнь 28, 2010, 09:31 от Mityai
»
Записан
Mityai
Гость
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #5 :
Июнь 28, 2010, 09:31 »
Цитата: daimon от Июнь 09, 2010, 11:34
Пример для 2D плоскости. Как переделать для 3D (x,y,z)?
Может быть работал с QMatrix, который задает повороты координатной сетки? Там эти все повороты матрицами делаются. В 3D абсолютно аналогично, только размерность матриц при преобразованиях координат не 2*2, а 3*3. Вид писать не хочу - сам не помню. На Вики есть и в той книге, про которую выше писал, тоже.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #6 :
Июнь 28, 2010, 10:19 »
Цитата: Mityai от Июнь 28, 2010, 09:31
Цитата: daimon от Июнь 09, 2010, 11:34
Пример для 2D плоскости. Как переделать для 3D (x,y,z)?
Может быть работал с QMatrix, который задает повороты координатной сетки? Там эти все повороты матрицами делаются. В 3D абсолютно аналогично, только размерность матриц при преобразованиях координат не 2*2, а 3*3. Вид писать не хочу - сам не помню. На Вики есть и в той книге, про которую выше писал, тоже.
Для сплайнов матрицы не нужны. Вычисления независимы и одинаковы для каждой координаты, поэтому что 2D (x. y) то и 3D (x. y. z) - просто добавить те же расчеты для Z. Напр. Безье сплайн. Есть 4 точки
p(i - 1) p(i) p(i + 1) p(i + 2)
*-------------*---------------*-----------------*
Нужно найти значение сплайна в точке между p(i) и p(i+1). Промежуточная точка описывается коодинатой U (в точке p(i) U = 0, в точке p(i + 1) U = 1). Зная U вычисляем 4 коэффициетна k1, k2, k3, k4 (формулы есть в книге). Затем просто
p(U) = p(i) * k1 + p(i + 1) * k2 + ((pi(i) - p(i - 1)) * k3 + ((pi(i + 2) - p(i + 1)) * k4;
Записан
Mityai
Гость
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #7 :
Июнь 28, 2010, 10:23 »
Цитата: Igors от Июнь 28, 2010, 10:19
Цитата: Mityai от Июнь 28, 2010, 09:31
Цитата: daimon от Июнь 09, 2010, 11:34
Пример для 2D плоскости. Как переделать для 3D (x,y,z)?
Может быть работал с QMatrix, который задает повороты координатной сетки? Там эти все повороты матрицами делаются. В 3D абсолютно аналогично, только размерность матриц при преобразованиях координат не 2*2, а 3*3. Вид писать не хочу - сам не помню. На Вики есть и в той книге, про которую выше писал, тоже.
Для сплайнов матрицы не нужны. Вычисления независимы и одинаковы для каждой координаты, поэтому что 2D (x. y) то и 3D (x. y. z) - просто добавить те же расчеты для Z. Напр. Безье сплайн. Есть 4 точки
p(i - 1) p(i) p(i + 1) p(i + 2)
*-------------*---------------*-----------------*
Нужно найти значение сплайна в точке между p(i) и p(i+1). Промежуточная точка описывается коодинатой U (в точке p(i) U = 0, в точке p(i + 1) U = 1). Зная U вычисляем 4 коэффициетна k1, k2, k3, k4 (формулы есть в книге). Затем просто
p(U) = p(i) * k1 + p(i + 1) * k2 + ((pi(i) - p(i - 1)) * k3 + ((pi(i + 2) - p(i + 1)) * k4;
Igors, в данном случае я имел в виду не расчет, а исключительно отображение в 3D (мало ли человеку нужно будет вокруг какой-то оси покрутить то, что получилось).
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #8 :
Июнь 28, 2010, 10:28 »
Цитата: Mityai от Июнь 28, 2010, 10:23
Igors, в данном случае я имел в виду не расчет, а исключительно отображение в 3D (мало ли человеку нужно будет вокруг какой-то оси покрутить то, что получилось).
Тогда само собой, матрица (и это гораздо легче без QMatrix)
Записан
Mityai
Гость
Re: Описание поверхности из дискретных точек функцией - интерполирование
«
Ответ #9 :
Июнь 28, 2010, 20:28 »
Для всех страждущих обещанная книга: "Математические основы машинной графики"
http://rghost.ru/2007292
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...