Название: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: daimon от Июнь 09, 2010, 11:34 Бикубическая интерполяция в большинстве случаев не справляется. Имеет ли смысл интеполировать плоскость кривыми Безье и как это сделать?
Пример для 2D плоскости. Как переделать для 3D (x,y,z)? Лучше бы избавится от класса QPainterPath и сделать методом для массивов. (http://ipicture.ru/uploads/100609/0/kBXstyYITn.png) Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Mityai от Июнь 25, 2010, 16:30 Если интересуют методы интерполяций (кривые Безье, сплайны и тому подобное), то это книга Роджерса "Математические основы машинной графики" за 2001 год, могу даж не полениться и выложить, если действительно нужно.
Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: ieroglif от Июнь 25, 2010, 17:26 Если интересуют методы интерполяций (кривые Безье, сплайны и тому подобное), то это книга Роджерса "Математические основы машинной графики" за 2001 год, могу даж не полениться и выложить, если действительно нужно. надо :) выложи.так же могу выложить на свой серв, что бы там лежало и все качали. единственная проблема - у меня жёсткий инет и почему-то нормально скачать могу только с rghost.ru - если туда выложишь, то перекачаю и выложу у себя. но самое идеальное - это прямой линк :) тогда сразу перекачаю к себе. Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Igors от Июнь 25, 2010, 23:09 Бикубическая интерполяция в большинстве случаев не справляется. Идеального сплайна пока не существует Имеет ли смысл интеполировать плоскость кривыми Безье и как это сделать? Вычисления одинаковы в 2D и 3D. Безье сплайн хорош когда пользователь может его подогнать интерактивно. Обычно это выглядит как 2 вектора (касательная) которые появляются из выбранной точке (см. напр. Photoshop). Часто также возникает потребность разбить сплайн в точке ("колено"). Если такая интерактивность не планируется, то Безье может давать "петли" и др. артефакты, поэтому лучше ограничиться бикубикомПример для 2D плоскости. Как переделать для 3D (x,y,z)? Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Mityai от Июнь 28, 2010, 09:28 единственная проблема - у меня жёсткий инет и почему-то нормально скачать могу только с rghost.ru - если туда выложишь, то перекачаю и выложу у себя. но самое идеальное - это прямой линк :) тогда сразу перекачаю к себе. Прямого линка нет, мне эта книга в наследство от одногруппника досталась:) На rghost выложу в ближайшее время, отпишусь. Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Mityai от Июнь 28, 2010, 09:31 Пример для 2D плоскости. Как переделать для 3D (x,y,z)? Может быть работал с QMatrix, который задает повороты координатной сетки? Там эти все повороты матрицами делаются. В 3D абсолютно аналогично, только размерность матриц при преобразованиях координат не 2*2, а 3*3. Вид писать не хочу - сам не помню. На Вики есть и в той книге, про которую выше писал, тоже. Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Igors от Июнь 28, 2010, 10:19 Пример для 2D плоскости. Как переделать для 3D (x,y,z)? Может быть работал с QMatrix, который задает повороты координатной сетки? Там эти все повороты матрицами делаются. В 3D абсолютно аналогично, только размерность матриц при преобразованиях координат не 2*2, а 3*3. Вид писать не хочу - сам не помню. На Вики есть и в той книге, про которую выше писал, тоже.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; Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Mityai от Июнь 28, 2010, 10:23 Пример для 2D плоскости. Как переделать для 3D (x,y,z)? Может быть работал с QMatrix, который задает повороты координатной сетки? Там эти все повороты матрицами делаются. В 3D абсолютно аналогично, только размерность матриц при преобразованиях координат не 2*2, а 3*3. Вид писать не хочу - сам не помню. На Вики есть и в той книге, про которую выше писал, тоже.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 (мало ли человеку нужно будет вокруг какой-то оси покрутить то, что получилось). Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Igors от Июнь 28, 2010, 10:28 Igors, в данном случае я имел в виду не расчет, а исключительно отображение в 3D (мало ли человеку нужно будет вокруг какой-то оси покрутить то, что получилось). Тогда само собой, матрица (и это гораздо легче без QMatrix)Название: Re: Описание поверхности из дискретных точек функцией - интерполирование Отправлено: Mityai от Июнь 28, 2010, 20:28 Для всех страждущих обещанная книга: "Математические основы машинной графики"
http://rghost.ru/2007292 (http://rghost.ru/2007292) |