Задача о принадлежности точки многоугольнику

Как-то появилась потребность определять принадлежность точки много угольнику. Естественно, прежде чем браться за разработку своего алгоритма было бы неплохо познакомиться с наработками в решении этой задачи. Что и сделал. полез в интернет. Одно из решений подобной задачи — метод трассировки луча. Купился я на посулы … Потратил рабочий день на него, прежде, чем понял насколько он глючный.

Сначала попробовал вариант под названием «очень быстрый алгоритм». По глупости сразу вставил в рабочий код. Программа глючила. Стал тестировать алгоритм. Простейшая тестовая утилитка показала, что что-то не так:

Утилита отмечает координаты мыши красным если false = точка вне многоугольника и зелёным (true), если «очень быстрый алгоритм» решает, что точка внутри многоугольника. Как видно из скриншота, в некоторых областях алгоритм врёт.

Пробуем проработать каждую точку вокруг многоугольника:

Вывод один — «очень быстрый алгоритм» очень глючный. Глючит на горизонтальных участках многогранника (трассировочный луч идёт по горизонтали вправо).

Пробуем простой (не быстрый) алгоритм трассировки луча:

Вроде бы всё прекрасно, но:

опять же часть точек внутри и снаружи многоугольника обрабатывает неверно.

Другая фигура:

Слева вверху область обработана неверно.
Для большинства случаев сойдёт, но мне надо 100% уверенность, в принадлежности точки многоугольнику или не принадлежности. Поэтому делаем лёгкий «плевок» в сторону авторов подобного алгоритма с такими ошибками и быстренько пишем свой алгоритм со 100%-й точностью.

Успехов!

P.S.: Не всё что в сети — золото.

Out of memory (Delphi 7)

Сообщение «Out of memory» в Delphi при работе с динамическими массивами скорее всего возникает при больших объёмах массивов и использовании функции SetLength в виде: SetLength(массив, Length(массив) + 1). Память пошагово, паленькими порциями, выделяемая под массив, оказывается «разорвана на куски», чем если бы ей выделяли сразу достаточно большой кусок. Выход простой: выделяем, как и положено, заранее просчитав необходимый объём, не x+1, а сразу достаточное количество памяти для решения типичной задачи. Если же памяти надо ещё больше — добавляем очередной большой кусок. Для контроля последней записи используем переменную.

Коррекция алгоритма нахождения ближайшего цвета в палитре

Была необходимость в одной работе находить в палитре цвет близкий к заданному. Одним словом, цвет наиболее подходящий для замены текущего. Решение очевидно — надо выбрать точку цветового куба ближайшую к искомой. Также и очевидно решение (Пифагор подсказал):

где a, b, c — длины проекций на координатных осях отрезка, соединяющего две точки цветового куба.

 Вроде бы всё ясно, но требуется много вычислений, да ещё со всеми цветами палитры …

Можно ли ускорить работу алгоритма?

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

Тогда для нахождения наименьшего отрезка достаточно складывать и сравнивать длины проекций этих отрезков (прости, Пифагор 🙁 ), то есть:

Вот и всё!

Перепечатка. Источник: Коррекция алгоритма нахождения ближайшего цвета в палитре

Вставка PHP кода на страницу в wordpress — плохое решение

Как вставить свой PHP код на страницу в wordpress?

В конец файла wp-includes/functions.php

function exec_php($matches){
    eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
    return $inline_execute_output;
}
function inline_php($content){
    $content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
    $content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
    return $content;
}
add_filter('the_content', 'inline_php', 0);
На странице пишем
[exec]phpinfo();[/exec]
Это работает для чистого PHP. Если есть комментарии, HTML, CSS, JavaScript то пишем так: [code] ваш код [/code]
Само по себе решение отвратительное. Достаточно из вкладки текстового режима в визуальный — сразу всё поймёте ….

Осторожно, за вами следят!

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

Вот пример с одно из интернет-бирж:

screenshot

Источник: www.bormaglot.ru — Осторожно, за вами следят!

Более 200 Android-приложений следят за пользователями посредством ультразвука

Специалисты Брауншвейгского технического университета представили на IEEE European Symposium on Security and Privacy интересный доклад (PDF), согласно которому все больше Android-приложений могут обнаруживать и отслеживать специальные ультразвуковые маячки, что позволяет различным компаниями шпионить за пользователями.

Специалисты называют эту технологию uXDT (ultrasound cross-device tracking, ультразвуковой межустройственный трекинг), и в докладе сказано, что в последние три года uXDT набирает все большую популярностью. К примеру, возможно внедрять специальные ультразвуковые сигналы, которые не различает человеческое ухо, в рекламные ролики, которые проигрываются по ТВ или на радио. Точно так же ультразвуковой «маячок» может быть внедрен и в сетевую рекламу, которую воспроизводит ПК или мобильное устройство, или может использоваться в магазинах в оффлайне.

Смысл в том, что микрофоны, находящиеся рядом с источником звука (в ноутбуках, смартфонах, планшетах и так далее), способны улавливать этот сигнал. Если при этом на устройстве установлено приложение, чей SDK содержит функциональность по поиску таких маячков, «услышав» ультразвук, приложение доложит на удаленный сервер о том, пользователь, который владеет телевизором X, только что прослушал рекламу, которую также «слышал» смартфон Y. Все это позволит составить более полный профиль пользователя, узнать какими устройства тот владеет, чем интересуется, когда бывает дома и так далее.

Исследователи рассказывают, что в основном за такую функциональность ответственны разработчики компаний Shopkick, Lisnr и SilverPush. А когда специалисты попытались разобраться, насколько распространено использование uXDT в Европе, выяснилось, что ультразвуковые «маячки» Shopkick можно обнаружить в 4 из 35 магазинов в двух неназванных городах. Хотя чтобы осуществлять слежку, нужно чтобы пользователь запустил на своем устройстве Shopkick SDK, это не такая большая проблема, так как производители, владельцы магазинов и рекламные компании часто побуждают пользователей устанавливать и запускать приложения, к примеру, чтобы получить скидку.

Также специалисты изучили телевещание в семи европейских странах, но, к счастью, пока не выявили ультразвуковых маркеров в передачах, то есть использование uXDT в телевизионной рекламе пока не так распространено.

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

Тревога специалистов связана с тем, что в ходе изучения 1,3 миллионов мобильных приложений они обнаружили 234 Android-приложения, готовых к работе с uXDT. Стоит заметить, что количество таких приложений возросло на порядок, к примеру, еще в декабре 2015 года их насчитывалось всего 39 штук.

Оригинал статьи на xakep.ru

Что делать если не работают постоянные ссылки в WordPress после переноса

Если после переноса сайта на WordPress перестают работать постоянные ссылки, то есть главная страница показывается, а ссылки на статьи нет: появляется сообщение что такой страницы на сайте нет. То на новом хостинге проблемы с Mod_rewrite.

Что делать?

1. Проверьте, а подключен ли этот модуль?

# grep mod_rewrite /usr/local/etc/apache/httpd.conf

Должна быть пара строк в httpd.conf

LoadModule rewrite_module libexec/apache/mod_rewrite.so
AddModule mod_rewrite.c

Если их нет — добавьте.

2. В секции Directory внесите следующие изменения

<Directory />
Options All
AllowOverride All
</Directory>

… и да будет свет!