Все потоки
Поиск
Написать публикацию
Обновить
6.07

Canvas *

Элемент HTML5

Сначала показывать
Порог рейтинга
Уровень сложности

Звездное небо на WebGL с использованием Three.js

Время на прочтение2 мин
Количество просмотров21K
В посте про «Звездное небо на Canvas» я уже описывал свой проект, где при помощи JavaScript на канвасе 2d формируется изображение глобуса Земли на фоне звезд, планет и орбит космических аппаратов. Для создания трехмерной картины звездного неба на плоскости я использовал формулы перевода трехмерных координат X, Y, Z отображаемых объектов: звезд, планет, космических аппаратов (КА), — в плоские декартовые координаты X, Y. Основную часть этих формул я взял из проекта Marble из состава KDE. Портированный с C++ на JavaScript код я сохранил в файле starry.js.

Starry Sky 3D
Читать дальше →

Солнечная система на graphics2d.js

Время на прочтение5 мин
Количество просмотров22K

Доброго {{timeOfDay}}


Как-то затихла тема canvas-а на Хабре…

Давайте вспомним солнечную систему на нём (начало, LibCanvas, Fabric.js) и напишем ещё одну версию? Теперь на graphics2d.js.


Читать дальше →

Graphics2D.js — объекты, интерактивность, анимация на canvas… И ничего лишнего

Время на прочтение4 мин
Количество просмотров26K

Доброго new Date().getTimeOfDay();




HTML5 Canvas незаменим, когда нужно что-то динамически нарисовать. Но если мы захотим что-то динамически изменять — нам придётся хранить состояние элементов и перерисовывать при необходимости.
Если мы захотим реагировать на события — нам придётся ловить координаты мыши и определять, находятся ли они внутри нужной фигуры.
И т.д.

Частые повторяющиеся задачи. Так и появляются фреймворки и библиотеки.

Впрочем, случай с Graphics2D.js немного другой: мне просто захотелось порисовать. С объектной моделью, анимацией и событиями. И — ничего лишнего.
Но максимально расширяемо: идей много, и всё можно вынести в плагины.
Читать дальше →

Бесплатные офисные приложения: редактируй это!

Время на прочтение9 мин
Количество просмотров29K
Определенная доля текстовой части моего диплома была написана на Nokia E63 — было срочно и поздно, поэтому работать приходилось в пути, переездах, на конференциях, а ноутбука у бедного студента не было. Удобная QWERTY-клавиатура и доступный Интернет позволяли набирать и редактировать текст даже с определенным комфортом. В общем, некоторый опыт извращений в наборе текста у меня есть.

image

То ли дело современные студенты — ноутбуки, планшеты, редакторы онлайн и оффлайн, совместная работа над документами. Кажется, проблемы в далеком прошлом.
Читать дальше →

Pixi-editor — простая рисовалка на pixi.js

Время на прочтение1 мин
Количество просмотров15K
Занимаясь одним большим проектом, добавил небольшую функциональность — выделение «маркером». Затем выделил эту часть в Pixi-editor. И теперь Pixi-editor — это рисовалка на основе pixi.js, и как следствие использует для рисования в браузере. Довел до примерного функционала рисовалки граффити Вконтакте.

Кому любопытно: демо, гитхаб.
Далее скриншот и пара комментариев.
Читать дальше →

Разработка векторного редактора на JavaScript (сложности и идеи)

Время на прочтение4 мин
Количество просмотров18K

Предыстория:


Имя большой опыт в разработке веб-сайтов (около 15 лет) и являясь программистом, я очень не люблю рутинную работу, стараюсь ее либо избегать, либо каким-то образом оптимизировать. Другими словами, если мне в какой-то момент необходимо заниматься наполнением контентом сайта (да, знаю, не царское дело программисту наполнять сайт, но случаи разные бывают), то я предпочту потратить пару часов на написание парсера входящих данных, чем часа 4 вколачивать эти данные вручную. И давно меня терзала проблема отсутствия удобного редактора для создания карт изображения. Конечно, можно нарисовать карту в Corel Draw или подобном, выгрузить в SVG и по быстрому переконвертировать в нужный формат, но меня давно интересовала возможность создания некоего редактора, который позволит, не загружая сторонние программы, прямо на сайте, по-быстрому загрузить изображение и выделить на нем нужную карту. Например, есть некое изображение здания, на котором необходимо выделить контур этажа и привязать к нему какие-то JavaScript-события или просто ссылку, вот как здесь:


Читать дальше →

Фреймворк RPG JS v2 для создания браузерной 2D онлайн-игры

Время на прочтение2 мин
Количество просмотров25K
Недавно вышла вторая версия фреймворка RPG JS v2 основанного на движке CanvasEngine.

image

Основная информация

Автор: Samarium
Лицензия: GPL
Язык: Английский, Французский

Введение

— RPG JS представляет собой framework для создания браузерной RPG. Для работы с данным фреймворком вы должны иметь минимальные знания в области программирования, которые облегчат создание инфраструктуры игры. (прокрутки, столкновения, движения и т.д. ...)

— RPG JS написана на HTML 5 и Javascript. Для работы с растровыми изображениями, спрайтами и т.д. используется библиотека EaselJS

— Скрипты из RPG Maker XP можно конвертировать в карту для RPG JS

— Совместим с браузерами: IE, Google Chrome, Firefox, Safari, Opera

Читать дальше →

Муравей Лэнгтона на JS и Canvas

Время на прочтение1 мин
Количество просмотров16K
Прочитав здесь пост об этой замечательной зверушке (wiki) я подумал, что будет интересно его реализовать и за вечер написал его на js+canvas.
Заодно чтобы было не скучно добавил ему соседей, получилось 5 цветовых популяций и ограниченное поле, которое породило граничные узоры.

Ну был бы муравей и был, но сегодня запустив его я поймал очень интересное поведение, желтая популяция в какой то момент начала методично избавляться от плодов деятельности розовой и при этом не оставлять следы своей деятельности, меня это заинтересовало и я потратил еще пару минут наблюдая за полем, желтая популяция полностью уничтожила стартовую локацию розовых, затем полностью само уничтожилась и начала строить дивный новый мир с «0», т.е. с 1 желтого пикселя.
Читать дальше →

Как я делал виджет управления мощностью для своего браузерного симулятора космических полетов

Время на прочтение6 мин
Количество просмотров7.8K
Сегодня я сделал небольшой сниппет кода для себя и решил поделиться с сообществом его содержимым и историей его создания.

Я довольно долго рылся в интернетах для того чтобы найти хоть что-то похожее на то, что мне нужно, но интернет до сих пор с такой задачей не сталкивался видимо или никто не решился создавать подобный виджет. Наверное никому не надо было.

Для начала озвучу чего мне так хотелось:
Мне нужен слайдер — аналог регулятора громкости, совмещенный с прогресс-баром. Эдакий компонент управления мощностью чего-либо, совмещенный с одновременной индикацией этой мощности. Иногда мощность может превышать установленный предел в 100% — необходимо отображать этот уровень и правильно высчитывать процент. Иногда мощность может заходить ниже нуля ( не знаю может ли — но я на всякий случай предусмотрел такую возможность) и этот уровень тоже надо отображать. Более того, то устройство, которое мы регулируем может быть инертным и разгоняться не с той скоростью, с которой мы выставляем значение. Если вы нажали кнопку форсажа на самолете — то двигатели выйдут на форсажный режим через некоторое время. То есть надо отдельно задавать значение прогрессбара и также отдельно получать-устанавливать текущее значение ползунка слайдера.

Может быть я и фиговый искатель, но в итоге психанул — решил сделать свой:
Здесь ссылка на результат, а под катом описание процесса
Читать дальше →

Звездное Небо на Canvas. Созвездия

Время на прочтение2 мин
Количество просмотров19K
Продолжение темы, начатой в предыдущей статье. Идеей к ее развитию послужило прочтение статьи на Хабре «LibCanvas: На пути к звёздам», где описывается реализация планетария на Canvas с выводом созвездий и планет в геодезической системе координат (с координатами точки наблюдения, азимутом и высотой над горизонтом). В посте автор дает ссылку на базу данных звезд и созвездий, которой я любезно воспользовался. Файл содержит координаты прямого восхождения (Right Ascension, в часах) и склонения (Declination, в градусах) звезд, точек созвездий и их названий. Я перевел их в радианы и сохранил в файл constellations.js для своего «звездного» проекта Starry Sky.

Starry Sky
Читать дальше →

Использование Audio API для создания вокодера

Время на прочтение14 мин
Количество просмотров21K
В прошлой статье мы немного познакомились с возможностями Audio API и написали простенький визуализатор сигнала. Теперь настало время копнуть поглубже и распробовать новые фишки API. Но нам нужна цель, к которой мы будем стремиться, и в данном случае нашей целью будет как следует поиздеваться над входящим сигналом и его характеристиками. Другими словами, мы напишем маленький вокодер.

Так как итоговый код получился довольно-таки большим, то в статье будет рассмотрены наиболее важные и интересные с точки зрения Audio API фрагменты. Итоговый результат вы конечно же сможете посмотреть на демке.

Читать дальше →

Генератор космических кораблей из арматуры

Время на прочтение35 мин
Количество просмотров19K
Доброго времени на вашей стороне планеты, Хабр.
Сегодня на хабре прямо день космических кораблей, столько интересных статей про последнюю битву в EVE Online, ну а я в свободное время я продолжаю делать свою двухмерную космическую игру и после длительного перерыва взялся за генератор кораблей. Пусть корабли и не такие шикарные как в EVE, зато свои.



Кому интересно как такой рендер на канве сделать, прошу под кат.
Читать дальше →

Пробуем Audio API на примере написания визуализатора

Время на прочтение6 мин
Количество просмотров54K

Web Audio API для меня является одной из тех новинок, которыми сейчас напичканы браузеры и с которой хотелось подружиться поближе и хоть как-то проникнуться тем, что же можно с помощью этого натворить. Что бы проникнуться, я решил написать простенький визуализатор аудио.

Но прежде чем начать разбираться непосредственно с Audio API, нам необходимо набросать заготовку нашего визуализатора и делать мы будем это при помощи canvas.

Подробности

Ближайшие события

Microsoft, к доске! Или чему Office365 может поучиться у редактора на Canvas

Время на прочтение2 мин
Количество просмотров22K


Недавно на TechCrunch появился любопытный обзор «еще одного конкурента Microsoft» от Steve O'Hear. И вряд ли он привлек бы мое внимание, если бы не Canvas, на котором, по утверждению автора, написан продукт. Canvas, который, как мне казалось, используется в основном только для игр и эффектов. Для тех, кому небезразлично развитие технологии HTML5 (и еще тех, кто ищет альтернативу MS), ниже привожу перевод статьи.
Читать дальше →

Разработка тайловой игры на JavaScript (Robbo)

Время на прочтение8 мин
Количество просмотров23K

Дорогие жители Хаброхабра!


В этот раз я принёс вам историю про javascript, atari и canvas! Игра называется Robbo и является портом одноименного творения 1989 года.
image

Сама игрушка. Игрушка с выключенным звуком. Ссылка на github.
Управление осуществляется стрелками. Если есть патроны, то shift+стрелка выстрелит в нужном направлении.
Но как?

Генерация лабиринтов алгоритмом Эйлера в 30 строк

Время на прочтение5 мин
Количество просмотров25K
image
Ну сразу стоит извиниться за запоздалую реакцию, ведь «неделя 30 строк» прошла, а я выкладываю этот пост только сейчас. Все из-за тяжелой рабочей недели и только на выходных удалось выделить немного времени.
Сразу поблагодарю пользователя deadkrolik за статью Алгоритм Эллера для генерации лабиринтов и оговорюсь о том что я плут и мошенник и 30 строками кода тут и не пахнет))) Кто не любит ждать объяснений, прошу сразу на Fiddle.
Читать дальше →

Схема пригородного движения ж/д сообщения Москвы и МО на Canvas

Время на прочтение2 мин
Количество просмотров22K
Ещё одна схема движения железнодорожного транспорта с использованием возможностей Canvas и dbCartajs.
Moscow Rail Map

В оригинале она называется Moscow Underground and Commuter Rail Map, её можно видеть в тамбурах подмосковных электричек. Изначально я хотел реализовать именно эту карту в качестве очередного демо к проекту dbcartajs, но в Сети нашёл лишь копию карты, снятую на мобильный телефон с неважным качеством. Зато с легкостью нашел с десяток схем Московского метро. Самая красивая, на мой взгляд, в Википедии, самая неказистая оказалась почему-то у Яндекса с его-то возможностями. Собственно SVG-вариант из Википедии я и переделал под Canvas, о чем писал в предыдущей статье.
Читать дальше →

Змейка на Canvas

Время на прочтение5 мин
Количество просмотров14K
Приветствую уважаемое хабра-сообщество. После прочтения поста «Создаём игру, используя canvas и спрайты» в день его выхода, решил углубить свои познания в Canvas. Так, как пока в работе не приходилось сталкиваться с этим элементом, пришлось пробежаться на скорую руку по API.
Конечно, рисование линий, прямоугольников, треугольников и полукругов весьма занимательное занятие. Но для приобретения реального опыта была поставлена задача – создать что-то функциональное и простое.

Вот так родилась идея написать собственную игру, всем знакомую змейку.
Читать дальше →

Решение проблемы border-radius + overflow:hidden с помощью canvas

Время на прочтение2 мин
Количество просмотров14K
Передо мной стояла следующая задача:

image

Есть блок с фоном (необязательно однородным), в нем какое-то количество круглых элементов с белым фоном, внутри которых размещены закругленные картинки любого размера. Если размер картинки меньше размера блока — она центрируется (как по вертикали, так и по горизонтали), если же размер картинки больше размера блока — больший параметр картинки занимает 100% параметра блока, а второй параметр сохраняет пропорциональное отношение, как и в оригинальной картинке.
Читать дальше →

Полноценные события мыши на графических элементах Canvas

Время на прочтение4 мин
Количество просмотров21K

Проблема


Те, кто занимается разработкой графики с использованием JavaScript + Canvas давно заметили проблему обработки мышиных событий на каких-либо элементах графики.

Решений проблемы несколько:
  1. Не обрабатывать их совсем, то есть ваша графика неинтерактивна и вам это ни к чему
  2. Вычислять прямоугольник для каждой фигуры, хранить его в памяти, и вызывать события при попадании курсора в эти прямоугольники
  3. Подходить к каждому элементу графики индивидуально, применяя различные математические формулы для прямоугольников, окружностей, линий, и т.п.


Все эти способы имеют право на жизнь в определенных обстоятельствах, но когда события обнаруживать нужно (отметаем вариант 1), когда фигуры зачастую не являются прямоугольными, имеют повороты, и прочие трансформации (вариант 2 тоже не подходит), когда фигуры не являются геометрически правильными, как например, сглаженые сплайнами линии, многоугольники с вогнутими гранями (вариант 3 тоже забыли), а самое главное, когда этих фигур становится бесчисленное множество, и хранить координаты каждой, перебирая их на каждый MouseMove становится накладным, на помощь приходит другой способ.
Читать дальше →

Вклад авторов