ПрограммированиеФорум2D графика и изометрия

Быстрое вращение растра

#0
21:05, 23 окт 2009

есть битмап (100,100)
так как  getpixel setpixel  медленные то я перевожу витмап в массив RGB(100,100)

нашел алгоритм вращения растра на getpixel setpixel  переделал на вращение массива
но всеравно очень медленно работает аж 3 секунды
в функцие очень часто используются Sin Cos Sqrt Atn
есть ли какойто способ для быстрого вращения ?
если нужно могу код показать

#1
21:07, 23 окт 2009

Натянуть на квад и glRotatef не судьба?

#2
21:13, 23 окт 2009

Вращение изображения (WinApi)

Оттуда пример Mikle -> скачать

#3
21:35, 23 окт 2009

OpenGL
> в функцие очень часто используются Sin Cos Sqrt Atn
заранее считай, епрст
sin/cos там константы на протяжении всего поворота, sqrt и atn зачем там - не представляю

#4
22:10, 23 окт 2009

oistalker
понимаеш мне ж ето не для 3д нужно. в ОГЛ с етим конечно проблем небылоб

#5
22:31, 23 окт 2009

Медленно...еще бы. GetPixel, SetPixel - замени лучше на ScanLine. И вообще, работай с массивом в памяти, а не с пикселями на экране.

#6
22:37, 23 окт 2009

> Sin Cos
Сделай свои функции с заранее расчитанными таблицами значений, скорость повысится.

#7
0:50, 24 окт 2009

OpenGL
> понимаеш мне ж ето не для 3д нужно. в ОГЛ с етим конечно проблем небылоб

Если поддержка 9x осей не нужна, то можно посмотреть в сторону SetWorldTransform

http://www.ucancode.net/Visual_C_MFC_Example/Rotate-bitmap-dib-im… c-example.htm

#8
1:14, 24 окт 2009

OpenGL
> понимаеш мне ж ето не для 3д нужно.
Это хоть игра? Если да(а также некоторые программы), то используй OpenGL. Рисовать 2D в OpenGL никто не запрещает. Можеш рендерить в битмап. Для таких целей софтварной реализации Mesa3D хватит.

PS:Ник OpenGL. Оправдывай:)

#9
3:58, 24 окт 2009

DimaO
так я и работаю с масивом у меня растр в масив (х,у)загнан
вот пикселы с этом масиве и нужно повернуть
oistalker
9 осей хм я о таком и не слышал. Но мне и всеравно лижбы растр вращался на заданый угол как можно быстрее

X512
ет не игра. ) gdi апликейшн

#10
9:45, 24 окт 2009

OpenGL
> 9 осей хм я о таком и не слышал.

Ты не понял... Он про Windows 9X (95, 98, ME)

#11
17:15, 24 окт 2009

FireFenix
ППЦ ну там и капча зарегатся нереально
5 раз вводил правельный код подтверждения и всё время сообщение вв ввели неверно
если можеш то отошли мне на почту плиз исходник

#12
17:31, 24 окт 2009

Я забыл, что с форму скачивать файлы тока после регистрации :(

Перезалил на мегааплоад
Rotate (Mikle)
Fast Rotate AA

#13
19:58, 24 окт 2009

oistalker спс  ну там много апи
хз как их юзать на .нет

FireFenix
ооо  спс  это то что нужно да еще и на VB просто супер

#14
20:35, 24 окт 2009

OpenGL
> хз как их юзать на .нет

причем тут тогда gdi ?

private Bitmap rotateImage(Bitmap b, float angle)
{
  //create a new empty bitmap to hold rotated image
  Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
  //make a graphics object from the empty bitmap
  Graphics g = Graphics.FromImage(returnBitmap);
  //move rotation point to center of image
  g.TranslateTransform((float)b.Width/2,(float)b.Height / 2);
  //rotate
  g.RotateTransform(angle);
  //move image back
  g.TranslateTransform(-(float)b.Width/2,-(float)b.Height / 2);
}

http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-rotate

ПрограммированиеФорум2D графика и изометрия

Тема в архиве.