Вписать растр в четырехугольник
От: Bauern  
Дата: 04.08.10 21:07
Оценка:
Есть растр в районе 100 Мб. Есть реальные координаты x1, y1, ... x4, y4 четырехугольника соответствующие вершинам растра. Но этот четырехугольник имеет не прямые углы. А растр — обычное прямоугольное фото. Как вписать этот растр в четырехугольник планирую использовать WINAPI, но если там ничего нет для этих целей тол DirectX. Я так понимаю мне нужно каждой точке xi, yi сопоставить текстурную координату ui,vi? это как я понимаю будут текстурные координаты (0,0); (0,1); (1,1); (1, 0)?

и еще не подскажите как реализовать такое на direct x и примерчиком киньте в меня плиз если есть.

спасибо!
Re: Вписать растр в четырехугольник
От: MBo  
Дата: 05.08.10 02:03
Оценка:
Здравствуйте, Bauern, Вы писали:

B>Есть растр в районе 100 Мб. Есть реальные координаты x1, y1, ... x4, y4 четырехугольника соответствующие вершинам растра. Но этот четырехугольник имеет не прямые углы. А растр — обычное прямоугольное фото. Как вписать этот растр в четырехугольник планирую использовать WINAPI, но если там ничего нет для этих целей тол DirectX.


Если четырехугольник — параллелограмм, то достаточно аффинных преобразований — например, с использованием функции SetWorldTransform и т.д. или PlgBlt.
Если нет, то понадобятся перспективные преобразования (на форуме было, скорее всего от McSeem2)
Re[2]: Вписать растр в четырехугольник
От: Bauern  
Дата: 05.08.10 04:08
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>Если четырехугольник — параллелограмм, то достаточно аффинных преобразований — например, с использованием функции SetWorldTransform и т.д. или PlgBlt.

MBo>Если нет, то понадобятся перспективные преобразования (на форуме было, скорее всего от McSeem2)

Произвольные преобразования.
Re[3]: Вписать растр в четырехугольник
От: Bauern  
Дата: 05.08.10 04:09
Оценка:
B>Здравствуйте, MBo, Вы писали:

MBo>>Если четырехугольник — параллелограмм, то достаточно аффинных преобразований — например, с использованием функции SetWorldTransform и т.д. или PlgBlt.

MBo>>Если нет, то понадобятся перспективные преобразования (на форуме было, скорее всего от McSeem2)

Ой извиняюсь с просони написал ерунду.

Четырехугольник произвольный.
Re: Вписать растр в четырехугольник
От: goto Россия  
Дата: 05.08.10 07:26
Оценка:
Если не использовать готовый 3d-api (OpenGL, DirectX), то нужно посмотреть несколько вещей:

— scanline алгоритм — построчная заливка полигона;

— "texture mapping" — преобразование, "натяжение" текстуры вообще. Конкретно подойдет "perspective projection", если нет каких-то специальных требований к наложению текстуры. Она чаще всего используется, найдется простой в использовании код для софтверного рендеринга;

— еще вылезет "texture filtering" — интерполяция пикселов картинки при трансформации.

Эти вещи описаны в алгоритмических библиотеках, нетрудно найти готовый и простой в использовании код, поэтому задача не такая трудоемкая, как может показаться.
Re[2]: Вписать растр в четырехугольник
От: Bauern  
Дата: 05.08.10 09:33
Оценка:
Здравствуйте, goto, Вы писали:

G>Если не использовать готовый 3d-api (OpenGL, DirectX), то нужно посмотреть несколько вещей:


G>- scanline алгоритм — построчная заливка полигона;


G>- "texture mapping" — преобразование, "натяжение" текстуры вообще. Конкретно подойдет "perspective projection", если нет каких-то специальных требований к наложению текстуры. Она чаще всего используется, найдется простой в использовании код для софтверного рендеринга;


G>- еще вылезет "texture filtering" — интерполяция пикселов картинки при трансформации.


G>Эти вещи описаны в алгоритмических библиотеках, нетрудно найти готовый и простой в использовании код, поэтому задача не такая трудоемкая, как может показаться.


а если использовать DirectX, Open GL? тогда что посмотреть какие функции? Я новечек в графике. Натолкните куда нужно пож!
Re[3]: Вписать растр в четырехугольник
От: goto Россия  
Дата: 06.08.10 09:56
Оценка:
Здравствуйте, Bauern, Вы писали:

B>а если использовать DirectX, Open GL? тогда что посмотреть какие функции? Я новечек в графике. Натолкните куда нужно пож!


Я сейчас функции точно не вспомню, но нужно создать четырехугольник, его вертексам присвоить нужные текстурные координаты и, собственно, наложить текстуру. Это самые базовые вещи, и я уверен, найдутся примеры в DirectX sdk, а по opengl можно стартовать здесь.
Re[4]: Вписать растр в четырехугольник
От: Аноним  
Дата: 06.08.10 12:21
Оценка:
Здравствуйте, goto,

Спасибо большое!
Re: Вписать растр в четырехугольник
От: Mountaineer  
Дата: 06.08.10 12:44
Оценка:
Здравствуйте, Bauern, Вы писали:

B>Есть растр в районе 100 Мб. Есть реальные координаты x1, y1, ... x4, y4 четырехугольника соответствующие вершинам растра. Но этот четырехугольник имеет не прямые углы. А растр — обычное прямоугольное фото. Как вписать этот растр в четырехугольник планирую использовать WINAPI, но если там ничего нет для этих целей тол DirectX. Я так понимаю мне нужно каждой точке xi, yi сопоставить текстурную координату ui,vi? это как я понимаю будут текстурные координаты (0,0); (0,1); (1,1); (1, 0)?


B>и еще не подскажите как реализовать такое на direct x и примерчиком киньте в меня плиз если есть.


B>спасибо!


Если используете DirectX, то єто действительно просто. Создаете два треугольника по форме вашего четырехугольника. Формат вершин будет координаты в пространстве и текстурные координаты. Достаточно будет простого урока с любого сайта по DirectX. Только лучше взять трансформированные вершины xyzrhw. Тогда координаты задаются в формате экрана (0, 0) (800, 600).
Но с DirectX при таких размерах картины могут быть проблемы — на видеокартах есть ограничения на размер текстуры.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.