Есть еще третий (почти правильный), но более простой для реализации способ.
Найти точки пересечения контуров препятствия и объекта (A и B).
Найти серединку этого отрезка (С).
Провести перпендикуляр из этой точки и найти точку пересечения этого перпендикуляра с контуром препятствия (D).
Луч DN и будет той самой нормалью.
Помню в начале века писал программу для работы с игровым портом для доса на турбо-паскале. Причем применение было тоже не совсем игровое. К разъему игрового порта звуковой платы я подключал магнитно-контактные извещатели для макетирования простейшей охранной системы. Нажатия/отпускание «кнопок» соответствовало размыканию/замыканию контактов. Контроль целостности самих шлейфов определялся на аналоговом входе через измерение изменения сопротивления цепи.
Тут видимо речь шла об абонентском оборудовании (GSM-мобильниках, которые есть у всех). И останется лишь жителям деревеньки раздать (продать) по сим-карте, и открыть свой бесплатный безлимитный Гадюкино-телеком.
Я из-под «доса» (командной строки Win98 до запуска GUI) запускаю программу PQBOOT.EXE для выбора одного из трех загрузочных разделов диска. Очень удобно, когда несколько разных загрузчиков конфликтуют между собой.
В вопросе с мультизагрузкой (с выбором операционной системы при старте компа) как-то совершенно незаслуженно забыт Windows 98. Речь идет не о графической среде, а режиме командной строки, и файлах CONFIG.SYS и AUTOEXEC.BAT, в которых можно прописать запуск кучи утилит, и организовать меню.
Я такую проблему обходил так:
1) держал на диске временную папку
2) каждый вызов функции логирования создавал НОВЫЙ файл (в этой временной папке), с именем вида "-.log", например «1310730104-B2E1.log»
3) периодически «заходил» в ту-самую папку, и «архивировал» отдельные записи в нужные места (и/или в один общий файл) с последующим удалением этих отдельных записей.
В связи с грядущим «недоперехором» на зимнее время 2011 нам еще долгое время придется отлавливать многие вещи, которые совсем не факт, что корректно обработаются за нас.
Это все конечно же хорошо, но не совсем понятно, куда русские буквы на этой клавиатуре рисовать? Оставлять ЙЦУКЕН? или как?
Помню, когда в детском центре работал преподавателем в компьютерном клубе, мы с детьми разобрали одну клавиатуру, и расставили на ней кнопки в раскладке «АБэВэГэДэйка».
То есть все 33 клавиши были выстроены в алфавитном порядке русского языка. (английская часть пострадала при этом значительно).
Дети для этой новой клавиатурной раскладки написали модуль на турбо-паскале, и написали несколько простеньких программочек для детишек 2 класса (что-то типа поле чудес или «висельщик»).
а так же простенький «смс-блокнот» (фул-скрин редактор одной строки 255 знаков), с очень крупными буквами.
Конечно же можно самоуверенно заявить, типа «настоящим программистам русские буквы нафик не нужны», и русские буквы нужны только «недо-программистам» на 1С, но, блин, иногда программистам бывает нужно комменты на русском написать (или же настоящие программисты комменты пишут либо на ридной англицкой мове либо транслитом)?
Хорошо, обещаю: попрошайничать больше не буду. Нет, так нет…
Несмотря на то, что «Не реализованы: коды загрузки шрифтов в знакогенератор VGA-адаптера» (я не думаю, что через последовательный порт будет какая-то объективная проблема залить «юзер-фонт» для текстового ввода, который фактически и есть «спрайт»).
Что же касается вопроса про «копипейст выделением/средней кнопкой мыши», то я предложил бы «промежуточное» (совместимое) решение:
Если проблема связана всего лишь с перехватом факта нажатия на «среднюю» кнопку мыши, то ее можно успешно эмулировать путем одновременного нажатия/отпускания левой и правой кнопок.
Согласен, что такой компромиссный способ не слишком удобен для конечного пользователя, но, тем не менее, я надеюсь что он поможет поможет уменьшить «страдания».
Именно поэтому-то я и не могу понять того яростного сопротивления разработчиков интерфейса виртуального терминала.
Например, если фронт-енд будет реализован в браузере через джава-скрипт, то и, нажатия кнопок мыши, и перемещение указателя отследить (и передать в терминалку) будет ничуть не сложнее, чем передать информацию о нажатии-отпускании обычных клавиш, а отрисовать изменение положения курсора — ничуть не сложнее, чем изменение цвета и фона у двух экранных знакомест.
В своей терминалке (с блек-джеком) я мышой управлял по способу «Управление указателем с клавиатуры» в панели управления Windows (вкладка «Специальные возможности»). Клиентское приложение отслеживало перемещение мыши поверх терминального окна (а так же нажатия и отпускания кнопок), и при изменении «ячейки» отправляло на терминальный сервер скан-коды аналогичных нажатий обычных клавиш клавиатуры (приводящих к аналогичным действиям при управлении курсором с цифровой панели клавиатуры при отключенном режиме «Num-Lock»).
Терминальный же сервер реагировал на такие действия путем отправки ответной команды на перерисовку двух знакомест экрана с новыми атрибутами цвета.
Найти точки пересечения контуров препятствия и объекта (A и B).
Найти серединку этого отрезка (С).
Провести перпендикуляр из этой точки и найти точку пересечения этого перпендикуляра с контуром препятствия (D).
Луч DN и будет той самой нормалью.
бесплатныйбезлимитный Гадюкино-телеком.Я такую проблему обходил так:
1) держал на диске временную папку
2) каждый вызов функции логирования создавал НОВЫЙ файл (в этой временной папке), с именем вида "-.log", например «1310730104-B2E1.log»
3) периодически «заходил» в ту-самую папку, и «архивировал» отдельные записи в нужные места (и/или в один общий файл) с последующим удалением этих отдельных записей.
например, имеем адрес мЮ-версии этого топика:
m.habrahabr.ru/post/123297/
если взглянуть на адрес полной версии,
habrahabr.ru/blogs/ui/123297/
то, можно заметить, что нужно лишь «вычислить» название блога этого топика. Оно тоже легко вытаскивается из содержимого первого килобайта документа:
<div class="tm"><a href="http://m.habrahabr.ru/" accesskey="2">μHabr</a> / <a
href="http://m.habrahabr.ru/blog/ui/">Интерфейсы</a></div>
Помню, когда в детском центре работал преподавателем в компьютерном клубе, мы с детьми разобрали одну клавиатуру, и расставили на ней кнопки в раскладке «АБэВэГэДэйка».
То есть все 33 клавиши были выстроены в алфавитном порядке русского языка. (английская часть пострадала при этом значительно).
Дети для этой новой клавиатурной раскладки написали модуль на турбо-паскале, и написали несколько простеньких программочек для детишек 2 класса (что-то типа поле чудес или «висельщик»).
а так же простенький «смс-блокнот» (фул-скрин редактор одной строки 255 знаков), с очень крупными буквами.
Конечно же можно самоуверенно заявить, типа «настоящим программистам русские буквы нафик не нужны», и русские буквы нужны только «недо-программистам» на 1С, но, блин, иногда программистам бывает нужно комменты на русском написать (или же настоящие программисты комменты пишут либо на ридной англицкой мове либо транслитом)?
Клиент к каждому http-запросу добавляет заголовок типа:
Authorization: OAuth oauth_consumer_key="mipeha.org.ru",
oauth_token="1%252FI7yTvPqJeJvD0MRC-LFLDrKZi0RNap7ZgVabspi6HOk",
oauth_nonce="6da9c93552fe248616009923350e66a9",
oauth_timestamp="1303544907",
oauth_signature_method="RSA-SHA1",
oauth_signature="jxw9GcA098Lo3nJ.......Wx5ZhX34vQmY15PiejefoD1Dw4v9eE%3D"
Закрытый RSA-ключ генерирует и хранит только у себя, а передает лишь токены с цифровой подписью.
Несмотря на то, что «Не реализованы: коды загрузки шрифтов в знакогенератор VGA-адаптера» (я не думаю, что через последовательный порт будет какая-то объективная проблема залить «юзер-фонт» для текстового ввода, который фактически и есть «спрайт»).
Что же касается вопроса про «копипейст выделением/средней кнопкой мыши», то я предложил бы «промежуточное» (совместимое) решение:
Если проблема связана всего лишь с перехватом факта нажатия на «среднюю» кнопку мыши, то ее можно успешно эмулировать путем одновременного нажатия/отпускания левой и правой кнопок.
Согласен, что такой компромиссный способ не слишком удобен для конечного пользователя, но, тем не менее, я надеюсь что он поможет поможет уменьшить «страдания».
Например, если фронт-енд будет реализован в браузере через джава-скрипт, то и, нажатия кнопок мыши, и перемещение указателя отследить (и передать в терминалку) будет ничуть не сложнее, чем передать информацию о нажатии-отпускании обычных клавиш, а отрисовать изменение положения курсора — ничуть не сложнее, чем изменение цвета и фона у двух экранных знакомест.
В своей терминалке (с блек-джеком) я мышой управлял по способу «Управление указателем с клавиатуры» в панели управления Windows (вкладка «Специальные возможности»). Клиентское приложение отслеживало перемещение мыши поверх терминального окна (а так же нажатия и отпускания кнопок), и при изменении «ячейки» отправляло на терминальный сервер скан-коды аналогичных нажатий обычных клавиш клавиатуры (приводящих к аналогичным действиям при управлении курсором с цифровой панели клавиатуры при отключенном режиме «Num-Lock»).
Терминальный же сервер реагировал на такие действия путем отправки ответной команды на перерисовку двух знакомест экрана с новыми атрибутами цвета.