www.demoscene.ruenglish version
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
ищется алгоритм zoomrotator
На страницу Пред.  1, 2, 3, 4 ... 18, 19, 20  След.
 
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Вс Авг 07, 2011 21:22    Заголовок сообщения: Ответить с цитатой

putImageData никакой прозрачности не имеет. Это просто рисует пиксели из масива в канвас.

В нашем случае:

ctx.putImageData(data, x * pieceSize + shift + 8 * rotation + 8 * zoom, y * pieceSize + shift + 8 * rotation - 8 * zoom);

Это копирует область из data в контекст ctx. Считай что ctx это видео-буфер.

Вообще, я непойму зачем тебе это? Принцип знаем? Знаем. А этот код это просто прямая реализация зума и поворота с Амиги, посредством хитрой алгебры с фиксированной точкой. Все эти байтовые операции это эквиваленты делений, умножений (кратных 2-ум), чтобы мощно заоптимизировать для слабого процессора, так делали в те времена, ибо сопроцессора математического небыло, либо он был очень тормозным. Сейчас особого смысла химичить с fixed point math нету, ну разве что в JavaScript Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
egons



Зарегистрирован: 01.08.2011
Сообщения: 67


СообщениеДобавлено: Вс Авг 07, 2011 22:29    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
Вообще, я непойму зачем тебе это? Принцип знаем? Знаем. А этот код это просто прямая реализация зума и поворота с Амиги, посредством хитрой алгебры с фиксированной точкой


слабоватый принцип, однако. хочется допилить до конца эффект, если почитать алгоритм, котрый описывает Tsunami про chaosland - вообще китайская грамота.
У меня пока что, если написать код, на экране фигня получается, а гонять JS пошагово - шизнешься просто, переписывать его на другой язык - можно чокнуться. давно хочется разобраться с красивым эффектом просто, obsession назови.

и я не понимаю, почему ты на зуме настаиваешь Wink

а в кодах что kumpa.c, что в нарытых амижных сырцах не разберешься, не ясно, куда и как и прозрачными ли или нет копируются пресловутые блоки пока что. завтра поробую, наверное.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Вс Авг 07, 2011 22:36    Заголовок сообщения: Ответить с цитатой

egons писал(а):
BiTL писал(а):
Вообще, я непойму зачем тебе это? Принцип знаем? Знаем. А этот код это просто прямая реализация зума и поворота с Амиги, посредством хитрой алгебры с фиксированной точкой


слабоватый принцип, однако. хочется допилить до конца эффект, если почитать алгоритм, котрый описывает Tsunami про chaosland - вообще китайская грамота.
У меня пока что, если написать код, на экране фигня получается, а гонять JS пошагово - шизнешься просто, переписывать его на другой язык - можно чокнуться. давно хочется разобраться с красивым эффектом просто, obsession назови.

и я не понимаю, почему ты на зуме настаиваешь Wink

а в кодах что kumpa.c, что в нарытых амижных сырцах не разберешься, не ясно, куда и как и прозрачными ли или нет копируются пресловутые блоки пока что. завтра поробую, наверное.


Знаешь, тебе наверное не стоит заниматься программированием Laughing

Что там переписывать с JS? Это же Си обычный. Там блин 15-20 строчек, если убрать комментарии. Причем код JS явно списан с алгоритма на assembler'е, тоесть дословно всё повторяется.

Я на зуме настаиваю потомучто этот эффект им и является. Это зум + фидбэк.

Короче я устал Smile Пойду лучше кодить интру для ЦЦ Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
egons



Зарегистрирован: 01.08.2011
Сообщения: 67


СообщениеДобавлено: Пн Авг 08, 2011 08:57    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
Знаешь, тебе наверное не стоит заниматься программированием Laughing


наверное, ты прав.

BiTL писал(а):
Что там переписывать с JS? Это же Си обычный. Там блин 15-20 строчек, если убрать комментарии. Причем код JS явно списан с алгоритма на assembler'е, тоесть дословно всё повторяется.

не факт, до сих пор неясно с прозрачностью. посмотри на blitterTornado.s - где ассемблер, где код JS?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пн Авг 08, 2011 18:32    Заголовок сообщения: Ответить с цитатой

egons писал(а):

BiTL писал(а):
Что там переписывать с JS? Это же Си обычный. Там блин 15-20 строчек, если убрать комментарии. Причем код JS явно списан с алгоритма на assembler'е, тоесть дословно всё повторяется.

не факт, до сих пор неясно с прозрачностью. посмотри на blitterTornado.s - где ассемблер, где код JS?


facepalm. ДА какая нахер прозрачность?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
egons



Зарегистрирован: 01.08.2011
Сообщения: 67


СообщениеДобавлено: Пн Авг 08, 2011 18:39    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
facepalm. ДА какая нахер прозрачность?


допиши код - убедишься. мне осталось с координатами разобраться, не совсем ясно, как работает.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пн Авг 08, 2011 20:07    Заголовок сообщения: Ответить с цитатой

egons писал(а):
BiTL писал(а):
facepalm. ДА какая нахер прозрачность?


допиши код - убедишься. мне осталось с координатами разобраться, не совсем ясно, как работает.


Зачем мне его дописывать? Я на 100% представляю как он работает Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
egons



Зарегистрирован: 01.08.2011
Сообщения: 67


СообщениеДобавлено: Пн Авг 08, 2011 21:36    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
Зачем мне его дописывать? Я на 100% представляю как он работает Smile


уверен на 100%? сомневаюсь...разве что свою реализацию напишешь на СС Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пн Авг 08, 2011 21:52    Заголовок сообщения: Ответить с цитатой

egons писал(а):
BiTL писал(а):
Зачем мне его дописывать? Я на 100% представляю как он работает Smile


уверен на 100%? сомневаюсь...разве что свою реализацию напишешь на СС Rolling Eyes


ну как я могу быть не уверен, если у нас есть JS-код, и там всё черным по белому? Впрочем и до этого был уверен Smile

Я незнаю куда мне вставить этот эффект в своей интро, но специально для тебя постараюсь придумать )
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
egons



Зарегистрирован: 01.08.2011
Сообщения: 67


СообщениеДобавлено: Пн Авг 08, 2011 22:06    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
ну как я могу быть не уверен, если у нас есть JS-код, и там всё черным по белому? Впрочем и до этого был уверен Smile

думаю, что в графике, без мифических ссылок на ogl и видео память.
возможно, что я ошибаюсь..

BiTL писал(а):
Я незнаю куда мне вставить этот эффект в своей интро, но специально для тебя постараюсь придумать )


буду очень польщен Cool
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пн Авг 08, 2011 22:26    Заголовок сообщения: Ответить с цитатой

egons писал(а):

думаю, что в графике, без мифических ссылок на ogl и видео память.
возможно, что я ошибаюсь..


попытаюсь ещё раз объяснить "физику" данного эффекта:

как это работает на примере:

01. берём фотоаппарат и лист бумаги, фломастеры
02. рисуем в центре листа маленькую каракулю разными цветами
03. фотографируем
04. сливаем фотку на комп, масштабируем фотку так, чтобы она была чуть больше оригинала
05. чуть-чуть поворачиваем (по часовой или против, опционально) растр.
06. распечатываем изображение (оно получится чуть больше оригинала)
07. рисуем на распечатанном рисунке караккулю в центре.
08. goto 03

В варианте с нашим демоэффектом все точно также, только там после строки 06 вносится эффект Dither (его бы могли повторить фотошопом на данном этапе), для того чтобы смешать рядом стоящие пиксели, это придаёт некоторое рассеяние, результат которого следующим циклом опять таки увеличивается и поворачивается и в итоге мы видим не гладко-увеличенные области, а нечно похожее на контуры карты (или фрактальные узоры).

Всё, на этом аргументы исчерпаны Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Вт Авг 09, 2011 03:46    Заголовок сообщения: Ответить с цитатой

Вот посмотри, специально для тебя написал (не сплю все-равно):

http://www.labinsk.ru/tmp/rotozoom/rotozooma.html (лучше смотреть в FireFox)

Там в коде вроде максимально просто всё. Смотри функцию draw().

Я использовал только встроенные функции HTML5 canvas, поэтому доконца повторить сабжевый эффект нельзя. Потому-что браузерная функция масштабирования сглаживает картинку и получается размытие. В Амижном варианте (и повторяющем его JS-коде приведённом ранее) масштабирование делается без сглаживания, поэтому там не размывается.

Ну и Dither-смешивания я не делал, лень функцию писать. А так бы ты увидел знакомые "фрактальные" контуры.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
egons



Зарегистрирован: 01.08.2011
Сообщения: 67


СообщениеДобавлено: Вт Авг 09, 2011 11:03    Заголовок сообщения: Ответить с цитатой

к чему рассуждать физику и поворот? там достаточно построить точки, из которых берутся блоки, и точки, куда переносятся эти блоки, сразу станет понятно. вот только с тем, что в массиве на JS блоки хранятся и по-другому рисуются.
вот и не получается пока(
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Вт Авг 09, 2011 13:04    Заголовок сообщения: Ответить с цитатой

egons писал(а):
к чему рассуждать физику и поворот? там достаточно построить точки, из которых берутся блоки, и точки, куда переносятся эти блоки, сразу станет понятно. вот только с тем, что в массиве на JS блоки хранятся и по-другому рисуются.
вот и не получается пока(


Да какая нах_й разница какие там блоки и почему они как-то там рисуются. Это блеать реализация масштабирования растра и его поворота, все эти хитрые операции со сдвигом байтов и логическими or , and, xor это ни что инное как зум и ротэйт, и поблочно рисуется потому-что это fixed point математика, с задрочкой на исключение умножений и 8-битные числа. Подогнали так, чтобы на Амиге не тупило. Я в 90-х так же на PC оптимизировал всё включая 3d-функции. Все так делали, ибо shl и shr намного быстрее чем умножение и деление, но побайтовый сдвиг это умножение или деление на кратное 2-м число. Ты вообще понимаешь что такое fixed point математика?

Нам ваще неважно посути как именно зумировать и поворачивать.

Короче я умываю руки. Сиди, тупи дальше.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
egons



Зарегистрирован: 01.08.2011
Сообщения: 67


СообщениеДобавлено: Вт Авг 09, 2011 15:06    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
Ты вообще понимаешь что такое fixed point математика?

нет, у меня двойка в школе Cool

BiTL писал(а):
Нам ваще неважно посути как именно зумировать и поворачивать.

особенно неважна твоя кривая реализация - да. понимание - важно.

BiTL писал(а):
Короче я умываю руки. Сиди, тупи дальше.


буду тупить, спасибо за изыски , я демку на asm94 нашел.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4 ... 18, 19, 20  След.
Страница 3 из 20

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах