Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

Про алгоритм вращения   Найти похожие ветки 

 
Mihey ©   (2004-05-16 21:28) [0]

Изображение вращается на некоторый угол без использования каких-либо фильтров сглаживания. Если я поверну изображение назад, изменится ли оно по сравнению с первоначальным???


 
Он   (2004-05-16 22:22) [1]

Ещё как.


 
MBo ©   (2004-05-17 07:29) [2]

Да, изменится. Стоит хранить исходное.


 
Leon ©   (2004-05-17 11:05) [3]

Если делать обратное преобразование, т.е. не переводить имеющуюся точку в нужную, а перебирать все нкужные и брать их из исходных то нет ( точнее почти нет).
Пример кода, поворачивающего  B: TBitmap;
var B2: TBitmap;
 function GetPix(x,y: integer): TColor;
 var xx, yy: integer;
 begin
   xx := cx + Round((X-cx)*cosPhi - (Y-cy)*sinPhi);
   yy := cy + Round((X-cx)*sinPhi + (Y-cy)*cosPhi);
   if (xx<0)or(yy<0)then
     Result := clWhite
   else
     if (xx>B.Width)or(yy>B.Height)then
       result := clWhite
     else
       Result := B.Canvas.Pixels[xx, yy];
 end;
begin
 B2 := TBitmap.Create();
 B2.Assign(B);
 phi := 2*3.14159/180*УголПоворота(град);
 cx := B.Width  div 2; // центр
 cy := B.Height div 2;
 sinPhi := sin(-Phi);
 cosPhi := cos(-Phi);

 for x := 1 to B.Width do
   for y := 1 to B.Height do
       B2.Canvas.Pixels[x,y] := GetPix(x, y);
 B.Assign(B2);
 B2.Free;
end;

Единственная проблема - границы.


 
MBo ©   (2004-05-17 13:12) [4]

>Единственная проблема - границы.
Отнюдь ;))

>for x := 1 to B.Width
???


 
Mihey ©   (2004-05-17 14:20) [5]

Проблема в том, что для упрощения алгоритма задумал ворочать битмап, делать преобразования и обратно его ворочать. Слухайте, а вот если я вращаю на 45 градусов. Это ведь такое преобразования, которое при желании можно без знания синусов/косинусов написать. Изменится?


 
MBo ©   (2004-05-17 14:44) [6]

>задумал ворочать битмап, делать преобразования и обратно его ворочать
Разъясни


 
Mihey ©   (2004-05-17 15:05) [7]

Нужно сделать что-то вроде Feathing Mask под углом. Сам Feathering на самом деле состоит из некоторой полосы, которую нужно затайлить. Полоса эта накладывается под углом на изображение и, например, всё что слева от неё закрашивается чёрным. Сначала хотел сделать по-человечески - сгенерировать полосу, полигоном закрасить всё, что левее, наложить полосу под углом, но потом меня достало, решил по-своему всё делать. Ну и вопрос возник.


 
MBo ©   (2004-05-17 16:24) [8]

Я не знаю точно, что такое Feathering Mask  - судя по гуглу, некий фотошоповский эффект. Нельзя ли это сделать наложением фильтра?
Или, может,  нечто похожее:
http://mbo88.narod.ru/pics.htm


 
Mihey ©   (2004-05-17 17:37) [9]

2 MBo:

Как по контуру букв в первой картинке. Вот на картинке я показал затею:

http://www.hot.ee/mvps19/pic1.png

Этого я хочу добиться следующим образом - поворачиваю большую картинку на угол, создаю прямоугольный край (feathering, по форме вертикальный), накладываю, предварительно всё, что левее через FillRect простой (быстрее, чем полигон) стираю, затем вращаю изображение назад.


 
марсианин ©   (2004-05-17 20:03) [10]

не хочешь сделать рисунок векторным? тогда можно будет делать все что угодно без потери качества


 
Pa5ha   (2004-05-18 15:06) [11]


> Слухайте, а вот если я вращаю на 45 градусов.

Смотря как. Если правильно - то нет.

> не хочешь сделать рисунок векторным?

Ты знаешь способ сделать BMP векторным?



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
1-1089797537
Anisa
2004-07-14 13:32
2004.08.01
программная сортирвка файлов каталога


6-1086171726
Sunny Way
2004-06-02 14:22
2004.08.01
Литература (статьи) по теории работы сокетов


1-1090399342
johny
2004-07-21 12:42
2004.08.01
как загрузить в IMAGE рисунок из инета!


1-1090268197
Виталий
2004-07-20 00:16
2004.08.01
Написание кода


14-1089777990
Dmitriy O.
2004-07-14 08:06
2004.08.01
Моя персональная ветка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский