1 Востаннє редагувалося generation (09.12.2015 21:36:23)

Тема: Алгоритм обертання зображення

Поясніть мені як саме обертати зображення. Бажано мовою Java SE.
Я розумію тригонометричні функції(sin, cos, tan(tg), cot(ctg), csc, sec) і також оборненні функції, як іх знаходити, вирішувати рівняння і т.п.
А от як повернути зображення(навколо довільної точки) - не розумію.

Подякували: КиївОболонь1

2

Re: Алгоритм обертання зображення

це робиться за допомогою матриць переносу.

3

Re: Алгоритм обертання зображення

я щось таке робив, коли писав тетріс на JavaScript.. і так, я там домножав координати точок на якесь значення...
але я то все зробив просто спостерігаючи за тим, як мають змінюватись координати точок, якщо ми крутимо їх в ту чи іншу сторону
от я щось намалював, це для повороту направо, наче знайшов формулу для 'y', а для 'x' самі зробіть

дисклеймер

автор не математик і рахувати не вміє

Прихований текст

http://не-дійсний-домен/lPHrQ/964fd17729.png

Подякували: generation1

4

Re: Алгоритм обертання зображення

як повернути зображення(навколо довільної точки) - не розумію.

Тобі треба почитати ось тут:
https://docs.oracle.com/javase/7/docs/a … ics2D.html
https://docs.oracle.com/javase/7/docs/a … sform.html
Приклад туточки: http://mindprod.com/jgloss/affinetransf … l#ROTATING

Подякували: generation1

5

Re: Алгоритм обертання зображення

FakiNyan написав:

я щось таке робив, коли писав тетріс на JavaScript.. і так, я там домножав координати точок на якесь значення...
але я то все зробив просто спостерігаючи за тим, як мають змінюватись координати точок, якщо ми крутимо їх в ту чи іншу сторону
от я щось намалював, це для повороту направо, наче знайшов формулу для 'y', а для 'x' самі зробіть

дисклеймер

автор не математик і рахувати не вміє

Прихований текст

http://не-дійсний-домен/lPHrQ/964fd17729.png

Дякую за відповідь. Я використовую в якості матриць масив 3х3. У мене виникає проблема з функцією rotate(rad). Звісно, є алгоритм і він працює. Я не можу сформулювати принцип дії алгоритма в своїй голові. Коли дивлюсь на алгоритм, ніби все зрозуміло, а от сформулювати(або розписати дії алгоритму на папері) я не можу і тупашу. А оскільки не можу сформулювати, то виходить що я нічого не розумію.

6

Re: Алгоритм обертання зображення

А оскільки не можу сформулювати, то виходить що я нічого не розумію.

Як я пам'ятаю (а може й ні) самий простий варіант, це вирахувати полярні коордінати точки зображення, та змінити її угол. Взагали то найоптимальніше мабудь було б описати свій класс, який бі віводив попіксельно картинку до канви по своєму розрахунку, обчислюючи саме полярні координати кожної точки.

7 Востаннє редагувалося Yola (10.12.2015 11:01:24)

Re: Алгоритм обертання зображення

Але ж якщо ви змінете кут картинки, то вона не влазитиме у свої старі границі, це вас влаштовує? Але це ще дрібнички. Важливо те, що ви не можете просто обернути пікселі по колу, бо якщо кут не кратний pi/2, то ви не знатимете куди писати піксель, і вам потрібно буде якось інтерполювати між сусідніми пікселяма (брати зважене середнє) для кожного результовного пікселю.

Гадаю вже існують готові бібліотеки з таким функціоналом, використовуйте їх.

Може бути корисним:
http://j2mepolish.org/javadoc/j2me/de/e … eUtil.html