• Давайте уберём кватернионы из всех 3D-движков

    • Перевод
    image

    Для записи трёхмерных поворотов программисты графики используют кватернионы. Однако в кватернионах сложно разобраться, потому что изучают их поверхностно. Мы просто принимаем на веру странные таблицы умножения и другие загадочные определения, и используем их как «чёрные ящики», поворачивающие векторы так, как нам нужно. Почему $\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=-1$ и $\mathbf{i} \mathbf{j} = \mathbf{k}$? Почему мы берём вектор и превращаем его в «мнимый» вектор, чтобы преобразовать его, например $\mathbf{q} (x\mathbf{i} + y\mathbf{j} + z \mathbf{k}) \mathbf{q}^{*}$? Да кому это интересно, если всё работает, правда?

    Существует способ описания поворотов под названием ротор, который относится к области и комплексных чисел (в 2D), и кватернионов (в 3D), и даже обобщается до любого количества измерений.

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

    Кроме того, для визуализации и понимания трёхмерных роторов не нужно использовать четвёртое пространственное измерение.

    Было бы здорово, если бы начали вытеснять использование и изучение кватернионов, заменяя их роторами. Заменить их очень просто, а код останется почти таким же. Всё, что можно делать с кватернионами, например, интерполяцию и устранение блокировки осей (Gimbal lock), можно сделать и с роторами. Но понимать мы начинаем гораздо больше.
    Читать дальше →
  • Доступно о кватернионах и их преимуществах

    • Перевод

    От переводчика: ровно 175 лет и 3 дня назад были изобретены кватернионы. В честь этой круглой даты я решил подобрать материал, объясняющий эту концепцию понятным языком.

    Концепция кватернионов была придумана ирландским математиком сэром Уильямом Роуэном Гамильтоном в понедельник 16 октября 1843 года в Дублине, Ирландия. Гамильтон со своей женой шёл в Ирландскую королевскую академию, и переходя через Королевский канал по мосту Брум Бридж, он сделал потрясающее открытие, которое сразу же нацарапал на камне моста.

    $i^2=j^2=k^2=ijk=-1$




    Памятная табличка на мосту Брум Бридж через Королевский канал в честь открытия фундаментальной формулы умножения кватернионов.

    В этой статье я постараюсь объяснить концепцию кватернионов простым для понимания образом. Я объясню, как можно визуализировать кватернион, а также расскажу о разных операциях, которые можно выполнять с кватернионами. Кроме того, я сравню использование матриц, углов Эйлера и кватернионов, а затем попытаюсь объяснить, когда стоит использовать кватернионы вместо углов Эйлера или матриц, а когда этого делать не нужно.
    Читать дальше →
  • Текстовый редактор — это вам не высшая математика, тут думать надо

      Современные текстовые редакторы умеют не только бибикать и не давать выйти из программы. Оказывается, внутри них кипит очень сложный метаболизм. Хотите узнать, какие ухищрения предпринимаются для быстрого пересчета координат, как к тексту приделываются стили, фолдинги и софтврапы и как это всё обновляется, при чем тут функциональные структуры данных и очереди с приоритетами, а также как обманывать пользователя — добро пожаловать под кат!



      В основе статьи — доклад Алексея Кудрявцева с Joker 2017. Алексей уже лет 10 пишет Intellij IDEA в JetBrains. Под катом вы найдете видео и текстовую расшифровку доклада.
      Читать дальше →
    • Полное руководство по правильному использованию анимации в UX

        Предлагаю вашему вниманию перевод очень крутой статьи по анимации интерфейса.
        The ultimate guide to proper use of animation in UX автора Taras Skytskyi.



        В настоящее время трудно впечатлить или даже удивить анимацией интерфейса. Она показывает взаимодействие между экранами, объясняет, как использовать приложение или просто направляет внимание пользователя. Изучая статьи об анимации, я узнал, что почти все они описывают только конкретные варианты использования или общие факты об анимации, но я не сталкивался с какой-либо статьей, где все правила, касающиеся анимации интерфейсов, были бы четко и практически описаны. Но, в этой статье я не буду писать ничего нового, я просто хочу собрать все основные принципы и правила в одном месте, так что другим дизайнерам, которые хотят запускать анимированные интерфейсы, не нужно было искать дополнительную информацию.
        Читать дальше →
      • Новые курсы по Python от Mail.Ru Group



          Python — простой, гибкий и популярный язык, применяемый во многих областях современной разработки. На нём создают веб-приложения, пишут игры, анализируют данные и выполняют многие другие задачи. Mail.Ru Group запустила специализацию «Программирование на Python», состоящую из четырех курсов — от погружения в язык до Data Science. Мы хотим, чтобы изучать и углублять свои знания в языке могли и новички, и студенты, и опытные разработчики.

          Первая из четырех частей, «Погружение в Python», стартовала еще в 2017 году, а теперь слушателям доступны вторая и третья части: «ООП и паттерны проектирования в Python» и «Создание Web-сервисов на Python». Курсы подготовлены при поддержке МФТИ, авторы — сотрудники МФТИ и Mail.Ru Group.

          В этой статье мы расскажем об авторах и темах, а также о требуемом уровне слушателей и навыках, которые они приобретут.
          Читать дальше →
        • Как миссия НАСА к Плутону чуть не пропала

          • Перевод

          Непубличная история зонда «Новые горизонты»




          Субботним утром, 4 июля 2015 года Алан Стерн [Alan Stern], руководитель миссии НАСА по изучению Плутона, «Новые горизонты», работал у себя в офисе, рядом с центром управления миссией, когда его телефон зазвонил. Он был в курсе празднования "Дня независимости", но гораздо больше его интересовало то, что в тот день была достигнута отметка «10 дней до сближения с Плутоном». Космический корабль «Новые горизонты», бывший основной темой его карьеры последние 14 лет, находился всего в 10 днях от своей цели — встречи с наиболее удалённой из исследованных [карликовых] планет.

          Алан в тот день был погружён в работу, занимаясь подготовкой к сближению. Он уже привык, что во время последней фазы миссии ему не удавалось выспаться, но в тот день он проснулся вообще посреди ночи, и уехал в операционный центр миссии (ОЦМ), чтобы загрузить большой и очень важный набор компьютерных инструкций, который будет управлять космическим кораблём во время сближения. Этот набор команд представлял собой результат десяти лет напряжённой работы, и тем утром его отправили по радиоволнам со скоростью света, нагонять «Новые горизонты», пока корабль приближался к Плутону.
          Читать дальше →
        • Тяжкое наследие прошлого. Проблемы командной строки Windows

          • Перевод
          Предисловие от автора, Рича Тёрнера из Microsoft. Это статья о командной строке: от её появления и эволюции до планов капитального ремонта Windows Console и командной строки в будущих версиях Windows. Будь вы опытным профессионалом или новичком в IT, надеемся, что вы найдёте статью интересной.

          Давным-давно в далёкой-далёкой серверной...


          С первых дней развития информатики людям нужен был эффективный способ передавать компьютеру команды и данные и видеть результат выполнения этих команд/вычислений.

          Одним из первых по-настоящему эффективных человеко-машинных интерфейсов стал Tele-Typewriter или «телетайп». Это электромеханическая машина с клавиатурой для ввода данных и каким-нибудь устройством вывода — сначала использовался принтер, позже экран.
          Читать дальше →
        • Как «выучить» английский за один год самостоятельно или статья для тех, у кого не сложилось с английским

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

          Читать дальше →
        • 640 КБ на самом деле хватит всем

          • Перевод
          image

          Никогда не сдавайтесь


          Действительно ли Билл Гейтс произнёс фразу «640 КБ должно хватить всем»? Её история довольно туманна, однако чаще всего её приписывают Биллу, так что, возможно, он действительно такое говорил.

          Его довольно часто за это высмеивали. Мысль о общем пространстве памяти размером всего 640 КБ по современным стандартам смехотворна. В этот размер не уместится даже исполняемые файлы большинства программ-установщиков.

          Для сравнения: калькулятор в Windows 10 занимает в состоянии простоя 16,2 МБ оперативной памяти — почти в 26 раз больше, чем объём доступной DOS-программам памяти в 1980-х.

          Странные дела


          Поверите ли вы мне, если я скажу, что до сих пор существует активное сообщество, использующее эту устаревшую платформу и разрабатывающее для неё ПО?

          Наверно, вашим первым вопросом будет «Но зачем?» И я хорошо вас понимаю. Давайте рассмотрим некоторые группы, которые до сих пор заинтересованы во вложениях усилий в DOS.
          Читать дальше →
        • Рассеяние света в атмосфере в менее чем четырёх килобайтах

            Введение


            В этой краткой заметке будет рассказано о том, как устроена модель атмосферного рассеяния света в нашей последней 4к интре Appear by Jetlag, party-версия которой заняла почётное 12-е место в 4k intro compo на демопати Revision 2018 в апреле этого года.


            Cкачать бинарник бесплатно без смс можно здесь.


            Если, однако, у вас не Виндовс, или нет мощной современной видеокарты, то есть утешительный утупчик:



            Музыку к этой работе написал keen, используя 4klang. За мной же остался весь код и визуальный ряд.


            Здесь будет рассказано только о модели рассеяния света. Остальные вещи, как то: инструментарий, модель города, модель освещения и материалов, не затрагиваются. Смелых могу отправить читать исходники, или смотреть записи того, как я часами туплю — большая часть разработки попала на видео.

            Читать дальше →
          • Ангстрем-Т: хронология проекта и мега-заказ

              Новость о подписанном 24 мая 2018 года в рамках Петербургского международного экономического форума мега-контракте всколыхнула волны моей памяти.
              Даже на сайте компании «Ангстрем-Т» появилась эта новость.

              И я решился написать все наболевшее и о проекте, и вообще…
              Читать дальше →
            • Однотипные методы? Хватит это писать

                Вы когда-нибудь писали адаптеры для Keychain или NSUserDefaults? Они полностью состоят из однотипных сеттеров и геттеров. Предлагаю написать логику один раз, предоставив остальное рантайму. За реализацией прошу под кат.


                клавиатура с кнопками copy и paste

                Читать дальше →
              • [Пятничное] Текстовая консоль в киберпанк-мир

                Легко передать видео сигнал, если ты отдален на расстояние спутника. Если выйти за пределы солнечной системы, то для передачи обычной картинки на Землю может потребоваться несколько часов. Но если же сигнал идет из удаленной на миллион световых лет галактики, то лишь обрывки символов долетают до нас. Иногда их можно расшифровать и сложить в анимацию, сделанную из ASCII символов. Эта история об одном странном мире, в котором технологии переплелись с древностью. Возможно, этой цивилизации уже не существует, ведь сигнал шел миллион лет.

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

                1. Вчера отстоял многочасовую очередь, чтобы записаться в школу космических полетов. Шел дождь с коэффициентом радиоактивности 56Гз, но мне не страшно, ведь я [неразборчиво]. И ведь не взяли!


                image

                Читать дальше →
              • Codable: Советы и Примеры

                • Перевод
                Хотел бы поделиться с вами некоторыми советами и трюками, которые я использовал на этом примере.

                Скачайте Swift Playground со всем кодом из этой статьи:

                image

                Codable представлен в Swift 4 с целью заменить старый NSCoding API. В отличие от NSCoding у Codable есть поддержка JSON первого класса, что делает его перспективным вариантом для использования API JSON.

                Codable отлично подходит в качестве NSCoding. Если имеется необходимость кодировать или декодировать некоторые локальные данные, которые вы должны контролировать в полной мере, вы можете использовать преимущество автоматического кодирования и декодирования.
                Читать дальше →
              • Типографика в iOS

                  Большинство информации в приложениях передается посредством текста. Поэтому верстать его приходится много, а незнание всей механики рендеринга влечет за собой различные проблемы. Например, простая задача — добавить выделение текста в существующее приложение. Заменяем UILabel на UITextView, и вдруг едут все отступы, текст выглядит совершено по-другому или вообще не влезает на экран.



                  Под катом вы найдете расшифровку выступления Ирины Дягилевой на AppsConf, в котором она объяснила, почему это происходит и какие настройки лучше использовать в том или ином случае.

                  Статья будет состоять из двух частей, сначала мы поговорим про основные термины типографики, про шрифты и их метрики и про наиболее часто используемые символьные атрибуты. А во второй части мы подробно поговорим про TextKit и отличия рендеринга UITextView и UILabel.

                  О спикере: Ирина Дягилева ведущий iOS разработчик в компании RAMBLER&Co. За многолетний опыт iOS разработки успела поучаствовать в создании нескольких приложений для крупных газетных издательств, в которых нужно было осуществлять полный контроль над отрисовкой текста.


                  Читать дальше →
                  • +31
                  • 7,8k
                  • 2
                • Learn OpenGL. Урок 4.11 — Сглаживание

                  • Перевод
                  • Tutorial
                  OGL3

                  Сглаживание


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


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


                  Нет, это никуда не годится. Разве такое качество изображения хочется видеть в релизной версии своего приложения?
                  Читать дальше →
                  • +39
                  • 10,9k
                  • 1
                • Cжатие и улучшение рукописных конспектов

                  • Перевод
                  Я написал программу для очистки отсканированных конспектов с одновременным уменьшением размера файла.

                  Исходное изображение и результат:


                  Слева: исходный скан на 300 DPI, 7,2 МБ PNG / 790 КБ JPG. Справа: результат с тем же разрешением, 121 КБ PNG [1]

                  Примечание: описанный здесь процесс более-менее совпадает с работой приложения Office Lens. Есть другие аналогичные программы. Я не утверждаю, что придумал нечто радикальное новое — это просто моя реализация полезного инструмента.

                  Если торопитесь, просто посмотрите репозиторий GitHub или перейдите в раздел результатов, где можно поиграться с интерактивными 3D-диаграммами цветовых кластеров.
                  Читать дальше →
                • Странности CSS, о которых полезно знать

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

                  image
                  Читать дальше →
                • Git: советы новичкам – часть 3


                    В финальной части нашей серии статей о работе с Git мы продолжим разговор о ветках, рассмотрим особенности работы с командой push и расскажем, что такое rebase. Первую и вторую статьи серии вы можете прочитать по ссылкам.
                    Читать дальше →