Pull to refresh
73
8.1
Send message

Эффективный расчёт области видимости и линии взгляда в играх

Reading time16 min
Views37K
image

В стратегических играх обычно требуется знать область видимости NPC, чтобы игрок мог продумывать стратегию и делать следующий ход. Мы рассмотрим математику и реализацию рациональной модели, не просаживающей скорость игры при большом количестве NPC на карте. Если вы хотите увидеть готовое интерактивное демо модели, перейдите сюда и играйте прямо в браузере! Вот скриншот демонстрации:

image

Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
Читать дальше →
Total votes 130: ↑126 and ↓4+122
Comments27

OpenGL примитивы в стиле RAII

Reading time4 min
Views3.8K
Добрый день, хабра юзеры. Я давно не писал и возможно кто-то заждался статей от меня — конечно же нет. Так как свободного времени стало чутка поболее, а мой GitHub совершенно пуст, я решил написать свой клон Mein kampf Minecraft. С большой вероятностью, я задокументирую это — следите за моими статьями на habr.com. Сегодня покажу как я обернул OpenGL примитивы в RAII стиле, если интересно — под кат.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments4

Обзор дешевых VPS-серверов

Reading time7 min
Views275K

Вместо предисловия


или как так получилось, что появилась эта статья


в котором рассказывается, зачем и почему проводилось это тестирование

Полезно иметь под рукой небольшой VPS сервер, на котором будет удобно тестировать некоторые вещи. Обычно требуется, чтобы он ещё и был круглосуточно доступен. Для этого нужно бесперебойное функционирование оборудования и белый IP-адрес. В домашних условиях порой довольно сложно обеспечить оба этих условия. А учитывая, что стоимость аренды простенького виртуального сервера сопоставима со стоимостью услуги выдачи Интернет-провайдером выделенного IP-адреса, аренда такого сервера вполне может оправдать затраты. Но как выбрать, у кого заказать такой VPS? Доверия к отзывам на разного рода ресурсах мало. Поэтому появилась идея выбрать лучшего поставщика подобных услуг по простому критерию — по производительности арендованного сервера.

Читать дальше →
Total votes 47: ↑42 and ↓5+37
Comments89

Реактивность в JavaScript: простой и понятный пример

Reading time12 min
Views56K
Во многих фронтенд-фреймворках, написанных на JavaScript (например, в Angular, React и Vue) имеются собственные системы реактивности. Понимание особенностей работы этих систем пригодится любому разработчику, поможет ему более эффективно использовать современные JS-фреймворки.



В материале, перевод которого мы сегодня публикуем, продемонстрирован пошаговый пример разработки системы реактивности на чистом JavaScript. Эта система реализует те же механизмы, которые применяются в Vue.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments14

Асинхронное программирование (полный курс)

Reading time2 min
Views100K

Методы асинхронного программирования


Асинхронное программирование за последнее время стало не менее развитым направлением, чем классическое параллельное программирование, а в мире JavaScript, как в браузерах, так и в Node.js, понимание его приемов заняло одно из центральных мест в формировании мировоззрения разработчиков. Предлагаю вашему вниманию целостный и наиболее полный курс с объяснением всех широко распространенных методов асинхронного программирования, адаптеров между ними и вспомогательных проемов. Сейчас он состоит из 23 лекций, 3 докладов и 28 репозиториев с множеством примеров кода на github. Всего около 17 часов видео: ссылка на плейлист.

Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments17

Про антенны для самых маленьких

Reading time10 min
Views75K
Попробуем разобраться, как работают антенны и почему электромагнитная энергия из комфортного проводника излучается в чужеродный диэлектрик, причем обойдемся без матана, что потребует, разумеется, очень серьезных упрощений и даже вульгаризации, но все же позволит получить начальное представление и, не исключаю, желание почитать материалы для более продвинутых.



Если вы радиоинженер, опытный радиолюбитель-связист или просто хорошо знаете физику, то вам нижеследующее читать строго не рекомендуется во избежание негативных последствий для вашего психического здоровья. Вас предупреждали.
Читать дальше →
Total votes 49: ↑46 and ↓3+43
Comments103

Deep Learning в вычислении оптического потока

Reading time11 min
Views20K
С появлением множества различных архитектур нейронных сетей, многие классические Computer Vision методы ушли в прошлое. Все реже люди используют SIFT и HOG для object detection, а MBH для action recognition, а если и используют, то скорее как handcrafted-признаки для соответствующих сеток. Сегодня мы рассмотрим одну из классических CV-задач, в которой первенство по-прежнему остается за классическими методами, а DL-архитектуры томно дышат им в затылок.


Total votes 64: ↑64 and ↓0+64
Comments7

Tesla Inc открыла возможность заказа Tesla Model 3 для жителей Канады и США

Reading time3 min
Views18K

Tesla Model 3 ожидают сотни тысяч клиентов компании Tesla. Ожидание несколько затянулось, и это понимают все

Два года назад компания Tesla представила свой новый электромобиль Tesla Model 3. Тогда Илон Маск заявил, что предзаказ на эту модель можно сделать, если внести $1000. Это считалось резервированием машины, и те, кто предоставил Tesla средства, получали место в очереди (которой на то время просто не было, поскольку и Tesla Model 3 существовала только в проекте).

Предзаказы оставили многие клиенты компании, фактически, она получила заявок гораздо больше, чем рассчитывала. И что немаловажно, больше, чем может удовлетворить в настоящий момент. Конечно, сейчас Маск старается сделать все возможное, чтобы наладить выпуск электромобилей в необходимом объеме. Но недовольных клиентов достаточно много — ведь кому хочется внести средства, а потом ждать несколько лет своего заказа? Теперь части клиентам можно расслабиться и получать удовольствие — Tesla открыла возможность полноценного заказа машины.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments104

Альтернатива: «Как научить Zabbix отправлять уведомления о проблемах прямо на рабочий стол»

Reading time3 min
Views8.6K

Пример уведомления


На волне статьи от Ильи (ableev) хочу рассказать об ином подходе для уведомлений от системы монторинга Zabbix на рабочем столе. Последние 3 месяца я пользуюсь расширением для браузера zabbix vue. От меня в этот проект прилетел только перевод на русский, так что это не реклама, расширение бесплатно, никаких закладок или чего-то ещё (в конце статьи будет ссылка на гитхаб данного расширения). Расширение есть для хромоподобных браузеров и для фаерфокс. В отличии от решений, представленных в статье Badoo, расширения в браузере работают на всех линуксах, маках, виндах и даже экзотичных хромОС. Небольшое сравнение под катом.

Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments7

Создание вашего первого ARCore-приложения

Reading time8 min
Views21K

Создание вашего первого ARCore-приложения


В предыдущей статье я уже объяснил, что такое ARCore и как он помогает разработчикам создавать удивительные приложения дополненной реальности без необходимости понимания математики и OpenGL.


Если вы ещё не читали её, я настоятельно рекомендую это сделать, прежде чем перейти к этой статье и начать разработку ARCore-приложений.

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Courier: миграция Dropbox на gRPC

Reading time16 min
Views8K


Примечание переводчика


Большинство современных программных продуктов не являются монолитными, а состоят из множества частей, которые взаимодействуют друг с другом. При таком положении дел необходимо, чтобы общение взаимодействующих частей системы происходило на одном языке (притом что сами эти части могут быть написаны на разных языках программирования и выполняться на разных машинах). Упростить решение этой задачи помогает gRPC — open-source-фреймворк от Google, выпущенный в 2015 году. Он решает сразу ряд проблем, позволяя:

  • использовать язык Protocol Buffers для описания взаимодействия сервисов;
  • генерировать программный код на основании описанного протокола для 11 разных языков как для клиентской части, так и для серверной;
  • реализовать авторизацию между взаимодействующими компонентами;
  • использовать как синхронное, так и асинхронное взаимодействие.

gRPC показался мне довольно интересным фреймворком, и мне было интересно узнать про реальный опыт компании Dropbox по построению системы на его основе. В статье есть масса деталей, связанных с использованием шифрования, построением надёжной, наблюдаемой и производительной системы, процессом миграции со старого RPC-решения на новое.

Дисклеймер
Оригинальная статья не содержит описания gRPC, и некоторые моменты могут показаться вам непонятными. Если вы не знакомы с gRPC или другими подобными фреймворками (например, Apache Thrift), рекомендую предварительно ознакомиться с основными идеями (достаточно будет прочитать две небольшие статьи с официального сайта: «What is gRPC?» и «gRPC Concepts»).

Спасибо Алексею Иванову aka SaveTheRbtz за написание оригинальной статьи и помощь с переводом трудных мест.
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments0

Введение в программирование шейдеров для верстальщиков

Reading time18 min
Views32K


WebGL существует уже давно, про шейдеры написано немало статей, есть серии уроков. Но в основной массе они слишком сложные для верстальщика. Даже лучше сказать, что они охватывают большие объемы информации, которые скорее нужны разработчику игрового движка, чем верстальщику. Там сразу начинают с построения сложной сцены, камера, свет… На обычном сайте для создания пары эффектов с фотографиями все эти знания избыточны. В результате люди делают очень сложные архитектурные конструкции и пишут длинные-длинные шейдеры ради очень простых по сути действий.


Все это побудило создать введение в те аспекты работы с шейдерами, которые наиболее вероятно пригодятся в работе именно верстальщику для создания различных 2d-эффектов с картинками на сайте. Конечно с поправкой на то, что сами по себе в дизайне интерфейсов они у нас применяются относительно редко. Мы сделаем стартовый шаблон на чистом JS без сторонних библиотек и рассмотрим идеи создания некоторых популярных эффектов, основанных на сдвиге пикселей, которые сложно сделать на SVG, но при этом они легко реализуются с помощью шейдеров.

Total votes 42: ↑41 and ↓1+40
Comments8

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры

Reading time6 min
Views41K


Кажется, что в последнее время электронная почта больше подходит для спама, чем для оперативных оповещений системы мониторинга. В этой статье я соберу методы получения уведомлений на мобильные устройства ― как через мессенджеры, так и через традиционные каналы связи.


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

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments17

Разработка высоконагруженного WebSocket-сервиса

Reading time10 min
Views63K
Как создать веб-сервис, который будет взаимодействовать с пользователями в реальном времени, поддерживая при этом несколько сотен тысяч коннектов одновременно?

Всем привет, меня зовут Андрей Клюев, я разработчик. Недавно я столкнулся с такой задачей – создать интерактивный сервис, где пользователь может получать быстрые бонусы за свои действия. Дело осложнялось тем, что в проекте были довольно высокие требования по нагрузке, а сроки были крайне невелики.

В этой статье я расскажу, как выбирал решение для реализации websocket-сервера под непростые требования проекта, с какими проблемами столкнулся в процессе разработки, а также скажу несколько слов о том, как в достижении вышеуказанных целей может помочь конфигурирование ядра Linux.

В конце статьи приведены полезные ссылки на инструменты разработки, тестирования и мониторинга.

Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments58

Нестандартная кластеризация, часть 3: приёмы и метрики для кластеризации временных рядов

Reading time16 min
Views43K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

Пока другие специалисты по машинному обучению и анализу данных выясняют, как прикрутить побольше слоёв к нейронной сети, чтобы она ещё лучше играла в Марио, давайте обратимся к чему-нибудь более приземлённому и применимому на практике.

Кластеризация временных рядов — неблагодарное дело. Даже при группировке статических данных часто получаются сомнительные результаты, что уж говорить про информацию, рассеянную во времени. Однако нельзя игнорировать задачу, только потому что она сложна. Попробуем разобраться, как выжать из рядов без меток немного смысла. В этой статье рассматриваются подтипы кластеризации временных рядов, общие приёмы и популярные меры расстояния между рядами. Статья рассчитана на читателя, уже имевшего дело с последовательностями в data science: о базовых вещах (тренд, ARMA/ARIMA, спектральный анализ) рассказываться не будет.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments5

Веб-камера, Node.js и OpenCV: делаем систему распознавания лиц

Reading time5 min
Views39K
Компьютерное зрение — это, в двух словах, набор технологий, в основу которых положены принципы человеческого зрения, которые позволяют компьютеру видеть и понимать то, что он видит. На первый взгляд вроде бы просто, но на самом деле это далеко не так.



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

Как говорится: «лучше один раз увидеть», в данном случае — увидеть, как Amazon использует эту технологию для создания торговых центров нового поколения. Потрясающе, правда?

Если вы хотите приобщиться к технологиям компьютерного зрения — предлагаю поговорить о том, как создать интерактивную систему распознавания лиц с использованием обычной веб-камеры, Node.js и OpenCV.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments6

Чем распознавать на мобильных платформах?

Reading time3 min
Views17K
image

image

Как-то так вышло что на какой бы я бирже фриланса не начинал первый проект — всегда с распознаванием, поэтому в создании приложух с подобным функционалом у меня много опыта, которым я хотел сегодня с вами поделиться.
Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments9

Распознавание жестов движений на Android используя Tensorflow

Reading time10 min
Views18K
image

Введение


В сегодняшние дни есть много разных способов взаимодействия со смартфонами: тач-скрин, аппаратные кнопки, сканер отпечатков пальцев, видео камера (например система распознавания лиц), D-PAD, кнопки на гарнитуре, и так далее. Но что насчет использования жестов движений?

Например быстрое перемещение телефона вправо или влево держа его в руке может очень точно отражать намерение перейти на следующую или предыдущую песню в плей-листе. Или же вы можете быстро перевернуть телефон верх ногами и потом назад для обновления контента приложения. Внедрение такого взаимодействия выглядит многообещающим и буквально добавляет новое измерение в UX. Эта статья описывает как реализовать подобное используя машинное обучение и библиотеку Tensorflow для Android.
Total votes 29: ↑29 and ↓0+29
Comments5

Введение в OpenCL

Reading time11 min
Views61K
Эта статья посвящена основам программирования на OpenCl. OpenCl -это язык программирования на GPU/CPU, по своей структуре близкий к стандарту c99. Его развитием занимается Khronos Group, где на их сайте доступна полная документация. Во избежание полемики на тему «ну это же всё тривиально, достаточно покопаться в инете» сразу оговорюсь: в рунете информация на эту тематику практически полностью отсутствует, а в западном инете доступна весьма в разрозненном состоянии на десятке сайтов. Здесь будет приведена некоторая компиляция базовых принципов, максимально упрощающая начинающему программисту жизнь, а так же позволяющая с самого первого проекта максимально задействовать вычислительные мощности видеокарты. Людям написавшим 2-3 серьёзных программы на OpenCl это будет уже неинтересно. Статья в некотором смысле является продолжением моей прошлой статьи.
Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments26

MinHash — выявляем похожие множества

Reading time4 min
Views26K
Категорически приветствую! В прошлый раз я писал о вероятностном алгоритме определения принадлежности элемента множеству, в этот раз будет про вероятностную оценку похожести. Не надо большого ума, чтобы додуматься до следующего показателя схожести двух множеств А и Б:

коэффициент Жаккара

То есть, количество элементов в пересечении делённое на количество элементов в объединении. Эта оценка называется коэффициентом Жаккара (Jaccard, поэтому «J»), коэффициент равен нулю, когда множества не имеют общих элементов, и единице, когда множества равны, в остальных случаях значение где-то посередине.

Как его посчитать?
Total votes 32: ↑31 and ↓1+30
Comments19

Information

Rating
724-th
Registered
Activity