• Алгоритм «пересекается ли отрезок с треугольником в 3D: да/нет»

    Предыстория


    В 3D имеется объемная фигура с триангулированной поверхностью и требуется выяснить: находится ли некоторая данная точка внутри объема или снаружи… Вот если бы речь шла об аналитически заданной поверхности или об объединении и пересечении таких поверхностей, то всё просто — втыкаем нашу точку в аналитическую функцию поверхности f (x,y,z) = 0 и смотрим: ноль или не ноль? Если больше нуля, то точка снаружи (куда градиент показывает), а если меньше нуля, то внутри. Да и с триангулированной поверхностью тоже особой возни нет, просто чуть дольше:
    — выбираем тестовую точку, которая заведомо лежит например снаружи,
    — соединяем ее отрезком с некоторой данной точкой (про которую мы хотим узнать, внутри она или снаружи)
    — и перебираем все треугольники, считаем пересечения: пересечений четное число — значит точка снаружи (как и тестовая, выбранная нами), нечетное — внутри.
    Осталось только сообразить, как пересечения c треугольниками фиксировать. И давайте немного договоримся с терминологией: пересечением будем называть наше рабоче-крестьянское пересечение, когда отрезок уверенно пронзает треугольник, а не трусливо по-интеллигентски его всего лишь касается).
    Читать дальше →
  • Интеграция карт в ваше Android-приложение

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

    В данном статье я расскажу как интегрировать возможность просмотра карт для мобильных устройств на основе Android, на примере Yandex Карт и Google Maps.
    Функционал библиотек этих компаний позволяет:
    • Перемещать карту
    • Изменять масштаб
    • Изменять виды карт
    • Получать события от карты



    Читать дальше →
  • Как запустить программу без операционной системы


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

      В интернете существует огромное количество описаний и туториалов о для того как написать собственную мини-ОС, даже существуют сотни готовых маленьких хобби-ОС. Один из наиболее достойных ресурсов по этой тематике, который хотелось бы особо выделить, это портал osdev.org. Для дополнения предыдущей статьи про PCI (и возможности писать последующие статьи о различных функциях, которые присутствуют в любой современной ОС), мы опишем пошаговые инструкции по созданию загрузочного диска с привычной программой на языке С. Мы старались писать максимально подробно, чтобы во всем можно было разобраться самостоятельно.

      Итак, цель: затратив как можно меньше усилий, создать собственную загрузочную флешку, которая всего-навсего печатает на экране компьютера классический “Hello World”.

      Читать дальше →
    • AR-Go: носимый компьютер своими руками

        С 2007 года я работаю над созданием странного девайса — носимого компьютера (wearable computer). Поначалу казалось, ничего сложного: ноутбук в рюкзак, дисплей-очки на нос — и вот у тебя какой-никакой, а вполне носимый компьютер, позволяющий развлекаться с дополненной реальностью и прочими любопытными фичами. Главное подобрать подходящее железо — и в путь! Но все оказалось не так-то просто.

        Картинки есть (и много), но они долго грузятся (хабра-эффект?) перезаливаю их на habrastorage.org…
        Читать дальше →